Récursivité en programmation
Exemple :
Étudier le code python ci-dessous. Que fait la fonction compte(n) ?
def compte(n):
"""n est un entier positif"""s=0
for i in range(n+1):
s=s+i
return s
print(compte(12))
Quelle différence y a-t-il avec le code suivant ?
def compteRec(n):
"""n est un entier positif"""if n==0:
return 0
else:return n+compteRec(n-1)
print(compteRec(12))
Expliquer « à la main » ce que fait compteRec(5)
Définition : Définition d'une fonction récursive
On dit qu'une fonction est récursive lorsqu'elle fait appel à elle même dans le corps de sa définition.
Exemple :
Si l'on veut calculer le produit de 3 par 4, on peut tout simplement calculer 3+3x3 et 3x3=3+3x2, etc...
Recopier et compléter le code ci-dessous afin que la fonction produit(m, n) renvoie le produit des entiers naturels m et n.
Et bien sûr, faites des tests !
def produit(m,n):
"""m et n sont des entiers naturels"""if n==0:
return 0
else:return m + produit(...,...)
Fondamental :
Une fonction récursive doit contenir au moins une condition d'arrêt, sinon le programme va boucler indéfiniment !
Les valeurs qui sont passés en paramètres aux appels récursif de la fonction doivent être différentes, sinon la fonction s'exécutera toujours de manière identique et la condition d'arrêt ne pourra jamais être vérifiée !
Les valeurs passées en paramètres doivent satisfaire les conditions d'arrêt après un nombre fini d'appels, sinon le programme va boucler indéfinimément et générer une erreur du type :
RecursionError