Partage
  • Partager sur Facebook
  • Partager sur Twitter

"multi"-recursivité

Sujet résolu
    9 novembre 2011 à 13:47:36

    Bonjour,
    J'étudie la récursivité pour le moment et aurais besoin d'un coup de main pour peaufiner un code.
    Voici un exemple du problème:
    def F(n):
    	if n==0:
    		return [1,2,3]
    	else:
    		return F(n-1)+[1,2]+F(n-1)
    

    Pour n > 0 la fonction doit calculer 2 fois F(n-1), est-il possible de stocker cette liste quelque part pour gagner du temps?
    Merci d'avance!! :D
    • Partager sur Facebook
    • Partager sur Twitter
      9 novembre 2011 à 16:12:30

      Par exemple, mais je vois pas du tout comment faire. :)
      L'idée est de ne pas faire 2 fois le calcul.
      • Partager sur Facebook
      • Partager sur Twitter
        9 novembre 2011 à 18:02:27

        def F(n):
        	if n==0:
        		return [1,2,3]
        	else:
                        fn_1 = F(n - 1)
        		return fn_1 +[1,2]+Fn_1
        

        Tout simplement (ou alors utiliser @functools.lru_cache(None), mais si tu débutes en Python oublie ce qu'il y a entre ces parenthèses).
        • Partager sur Facebook
        • Partager sur Twitter
          9 novembre 2011 à 18:47:35

          Eh bé ouais, je viens de le tester aussi, effectivement ça marche.
          Il y a encore des trucs que je dois comprendre en récursivité apparemment, ça m'a pas l'air net cette histoire. :p
          Merci beaucoup!!!

          (Oulà j'y comprends rien! :p J'y reviendrai plus tard...)
          • Partager sur Facebook
          • Partager sur Twitter

          "multi"-recursivité

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown