7. Récursivité¶
On appelle fonction récursive une fonction qui s’appelle elle-même. Ceci est très lié à la notion de récurrence en mathématiques.
Par exemple, la factorielle en mathématiques est définie par la condition intiale \(0! = 1\) et par la relation de récurrence \(n! = n\cdot(n-1)!\) lorsque \(n\geq1\).
In [1]: def factorielle(n):
...: return 1 if n==0 else n*factorielle(n-1)
...:
In [2]: factorielle(3)
Out[2]: 6
Par exemple lors de l’appel de factorielle(3)
3*factorielle(2)
2*factorielle(1)
1*factorielle(0)
A noter que le case de base doit être impérativement défini sinon l’algorithme ne termine pas. En Python, il existe un garde-fou consistant à imposer un niveau maximum de récursion. Si jamais celui-ci est dépassé, une exception est levée.
À faire
baratin sur la tour de Hanoï