Exemples et déroulement
Factorielle et somme des n premiers entiers
Factorielle et somme des n premiers entiers
Tu as déjà vu la factorielle ; voici un second exemple classique de récursivité : la somme des n premiers entiers, c'est-à-dire 1 + 2 + 3 + ... + n.
Cette somme se définit récursivement ainsi : la somme jusqu'à n est égale à n plus la somme jusqu'à n moins 1. Le cas de base est n égal 0 : la somme jusqu'à 0 vaut 0.
def somme(n):
if n <= 0:
return 0 # (cas de base)
else:
return n + somme(n - 1) # (cas recursif)
print(somme(5)) # (affiche 15, car 1+2+3+4+5 = 15)
Compare cette version récursive à une version classique avec une boucle :
def somme_iterative(n):
total = 0
for i in range(1, n + 1):
total = total + i
return total
Les deux fonctions renvoient exactement le même résultat. La récursivité n'est donc pas la seule solution : c'est souvent une question de clarté. Pour un problème qui se définit naturellement en fonction d'une version plus petite de lui-même, la version récursive est parfois plus lisible et plus proche de la définition mathématique du problème.
Reprenons la factorielle avec un autre exemple de déroulement, factorielle(4) :
# factorielle(4) = 4 * factorielle(3)
# factorielle(3) = 3 * factorielle(2)
# factorielle(2) = 2 * factorielle(1)
# factorielle(1) = 1 (cas de base atteint)
# donc factorielle(4) = 4 * 3 * 2 * 1 = 24
Retiens la méthode générale pour construire une fonction récursive : identifie d'abord le cas de base le plus simple, puis exprime le cas général en fonction d'un problème plus petit qui se rapproche de ce cas de base.

