Correction de la fonction Mystère#
Rappel de l’énoncé :
On donne une fonction Mystere
dont le code est rappelé plus loin. Il faut
étudier cette fonction, ces propriétés et le résultat de son application.
Avertissement
L’iframe de https://Pythontutor.com nécessite d’autoriser le code (js, xhr et iframe) depuis pythontutor. On peut ajouter
frama.io pythontutor.com frame allow
frama.io pythontutor.com script allow
frama.io pythontutor.com xhr allow
à la configuration d’uMatrix.
On considère la fonction suivante.
def Mystere(a, b):
if b == 1:
return a
else:
return a*Mystere(a, b - 1)
Mystere(5, 4)
Le code ci dessus montre assez clairement que, dans une fonction récurisve
avec plusieurs variables, seule la variable «de récursivité» est modifiée.
Ici a
n’est pas réaffectée pendant le processus de calcul de la valeur de
retour : a
est toujours une référence vers 5, et c’est le résultat de
Mystere(5, ⋅ )
qui évolue avec les appels successifs.