Bonjour à tous,

J'écris un binaire qui retourne un nombre de Fibonacci en fonction de l'indice qu'on lui passe. Pour cela, j'ai fait simple : j'utilise la récursivité. Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int calcul_fibonacci(int fibonacci_number)
{
	if (fibonacci_number == 0)
	{
		return 0;
	}
	else if (fibonacci_number == 1 || fibonacci_number == 2)
	{
		return 1;
	}
	else
	{
		int resultat = (calcul_fibonacci(fibonacci_number - 1)) + (calcul_fibonacci(fibonacci_number - 2));
 
		return resultat;
	}
}
Donc ça fonctionne, mais c'est pas super optimal : pour des indices variant de 1 à 40, c'est presque instantané, pour un indice de 45, ça prend 13 seconde, mais pour un indice de 100, c'est effroyablement long.

Vous pensez que je peux corriger ça si je pars sur autre chose que sur une fonction récursive ?

D'avance merci'