si vous avez des suggestions ou des commentaires allez-y!!
Télécharger le zip
Moi je conseille justement d'y reflechir, c'est tout le contraire. C'est tout l'art de l'optimisation que de supprimer la recursivite pour passer a l'iteratif.Penche toi donc la dessus pour ta prochaine source, il y a des bouquins entiers sur le sujet.Reflechir est toujours bon.Bonne continuation.
Pour nuancer un peu je dirais que la récursivité est souvent une bonne solution théorique malheureusement limitée par la taille de la pile d'appel.L'exemple le plus connu etant sans aucun doute la suite de fibonacci. La version récursive doit planter à l'indice 10 alors que la méthode itérative peut en supporter plusieurs milliers (et même certainement davantage)Ceci-dit le passage à l'itératif est très souvent une simulation de la pile d'appels... en quelques sortes un tableau qui garde les résultats précédents.D'après moi le récursif est plus beau (oui oui la beauté existe en informatique) mais moins performant.D'ailleurs BruNews je parlerai plus d'amélioration de performances que d'optimisation car la méthode récursive a des avantages comme la lisibilité et la compréhensibilité.Et pour teddy_bear, tu abordes ici tout juste les bases de la programmation récursive... Tu as d'ailleurs commis une faute dans ta fonction hanoi, puisqu'elle ne renvoie rien quand n<=0... Je te rappelle le principe de base des algos récursifs :- traitement du cas de base (c'est-à-dire le cas le plus simple)- si le cas est plus compliqué, on découpe le problème en sous-problèmes un peu moins compliqués (diviser pour mieux régner!)Ici tu n'as fait que la deuxieme partie
Essaie de parler 'beaute du code' a un utilisateur qui se tape le sablier sur l'ecran, tres difficile a faire passer comme pilule surtout si un concurrent propose le meme prog avec resultat immediat.
garslouche> la deuxieme partie de ta définition de la récursivité n'a a mon sens aucun rapport avec la récursivité a proprement parler. Je crois que tu décris plutot la programmation modulaire.Pour ce qui est de la récursivité, je dirais qu'en effet il faut traiter à part les cas simple, ou les cas particuliers (il existe un sous ensemble sur lequel on sait résoudre le problème), et pour tous les autres cas, on doit trouver un processus qui nous permet ne nous ramener aux cas qu'on connait déja.
Sur la source:conio.h pas standardmain() -> int main()clrscr() pas standardgetch() pas standardhanoi ne retourne rien donc mets la en void
Je persiste et je signe... par définition une fonction récursive fait appel à elle même.Et d'après le théorème de terminaison, une fonction récursive qui fonctionne doit utiliser une fonction décroissante dans un ensemble qui n'admet aucune fonction strictement décroissante (par exemple N)C'est-à-dire simplifier un problème...exemple simple : factorielleOn sait faire pour 0 : 0!= 1Si on cherche pour 7 : trop compliqué -> on s'appuie sur 6!, là encore trop compliqué, etc... jusqu'à 0 : qu'on sait traiterLa programmation modulaire c'est juste le fait de décomposer en fonctions et sous-fonctions... rien d'algorithmique !
Oui la je suis d'accord, mais quand tu disais "si le cas est plus compliqué, on découpe le problème en sous-problèmes un peu moins compliqués (diviser pour mieux régner!)", avoue que ca rappelle quand même plus la programmation modulaire
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 599 200 membres 451 nouveaux aujourd'hui 15 443 membres club