On parle de récursivité lorsqu'une fonction s'appelle elle même comme dans la fonction suivante qui calcule n!=1 x 2 x 3 x 4 x ... x (n-1) x n.


def factoriel(n) :
	if n > 1 :
		return n*factoriel(n-1)
	else :
		return 1

Ce type de programmation est très adapté au suites définies par récurrence. Par exemple, si l'on souhaite calculer le terme de rang n de la suite définie par :

  • u(0)=1
  • pour tout entier naturel n non nul, u(n)=0.7*u(n-1)+8
On aura le code suivant :


def u(n) :
	if n > 0 :
		return 0.7*u(n-1)+8
	else :
		return 1

Cela marche aussi avec des suites récurrentes d'ordre 2 comme dans la suite de Fibonacci ou chaque terme est égale à la somme des deux termes précédents.


def fibonacci(n) :
	if n > 1 :
		return fibonacci(n-1) + fibonacci(n-2)
	else :
		return 1 # Les deux premiers termes étant tout deux égaux à 1