Beruflich Dokumente
Kultur Dokumente
A. EL ALLAOUI
QU’EST-CE QUE LA RÉCURSIVITÉ?
Exemple 1
La fonction suivante calcule la factorielle n! d’un nombre n. On se base sur la
relation de récurrence n! =(n−1)!∗n
Implémentation itérative
int FactorielleRecursive(int n)
{ int FactorielleIterative(int n)
if (n <= 0)
{
return 1;
int i, resultat=1;
else
return n * FactorielleRecursive(n-1); for (i=1 ; i<=n ; i++)
/* appel récursif */ resultat *= i;
} return resultat;
}
RÉCURSIVITÉ DES PROCÉDURES
Exemple
Valeur de fn pour n de 0 a 8
#include <stdio.h>
// version 1 pour explication
long fibonacci(int n) {
if (n <= 1) {
return n;
} else {
long x = fibonacci(n-1);
long y = fibonacci(n-2);
return x + y;
}
}
void main() {
printf ("Fibonacci de n ? ");
int n; scanf ("%d", &n);
printf ("Fibonacci de %d est %ld\n", n, fibonacci(n) );
}
Analyse: Nombres de Fibonacci
Une fonction récursive peut s’appeler elle-même plusieurs fois avec des
paramètres différents. La fonction fibonacci(n) s’appelle récursivement 2
fois en fibonacci (n-1) et fibonacci (n-2).
Exemple d’algorithme récursif : Le jeu des tours de Hanoï
Le jeu est constitué d’une plaquette de bois où sont plantées trois tiges. Sur ces
tiges sont enfilés des disques de diamètres tous différents.
Les seules règles du jeu sont que l’on ne peut déplacer qu’un seul disque à la fois,
et qu’il est interdit de poser un disque sur un disque plus petit.
Au début tous les disques sont sur la tige de gauche, et à la fin sur celle de droite.
indice 1 2 3 4 5 6 7 8 9
valeur 0 2 4 5 6 9 14 20 30
4. Le nombre obtenu (15) est plus grand que 9, on recommence donc avec la
partie inférieure du tableau. 6 7
9 14