mr_demonicon
Messages postés824Date d'inscriptiondimanche 20 juillet 2014StatutMembreDernière intervention 9 avril 2016
-
9 avril 2016 à 18:52
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 2022
-
11 avril 2016 à 11:31
Bonjour,
Savez vous comment cette algorithme fonctionne réellement?
Je cherche a savoir comment ça se fait que après que la fonction puis soit appelé jusqu'à k=1 alors elle arrive a revenir en arrière et retrouver son chemin pour donner la bonne solution (je cherche donc des caractéristiques propres a python sur les fonctions récursives)
Si quelqu'un peut m'expliquer le principe de cette pile d'éxécution (si c'est bien cela), j'en serait ravi.
Voici le code:
import time a=int(input()) k=int(input()) n=int(input()) hey=time.time() #rajouter pour obtenir le temps def puis(a,k,n): if k==0: return 1 b=puis(a,(k//2),n) if k%2==0: return ((b*b)%n) return ((b*b*a)%n) print(puis(a,k,n)) ho=time.time() print(ho-hey)
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 202275 11 avril 2016 à 11:31
Bonjour,
A chaque exécution de la boucle récursive il y a sauvegarde du contexte à cet instant (variables, pointeurs, etc) il y a donc un empilement de zones mémoire.
Il faut qu'il y ai dans le programme une condition de sortie sinon le nombre d'appels récursifs est limité par un paramètre Python et aussi bien sur par la quantité de mémoire disponible.