Correction de la fonction Mystère

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.