Bonjoiur tout le monde,

Nous étudions pour l'instant la récursivité.

J'ai un exemple mais je ne comprends pas le résultat qui pourtant est correcte.

Je travaille sur base de la suite de Fibonacci :

1 1 2 3 5 8 13, etc

A partir du 3e, chaque nombre est obtenu en additionnant les 2 précédent.

J'ai un petit programme qui calcule le Nième nombre de celui qu'on rencontre au clavier :


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
18
public class Fibonacci 
{
	public static void main (String [] args)
	{
		System.out.println("Entrez un nombre, je vous calcule Fibonacci");
		System.out.println(fibonacci(Clavier.lireInt()));
		
	}
	
	public static long fibonacci (int nb)
	{
		long res;
		if ((nb==2) || (nb == 1))
		res = 1;
		else
		res = fibonacci(nb-1) + fibonacci (nb-2);		return res;
	}
}
ce que je ne comprends pas, c'est la méthode fibonacci:

Je comprends bien qu'on crée une variable nommée res de type long, que si le chiffre entré au clavier est 2 ou 1, la réponse sera d'office 1.

ce que je ne comprends pas, c'est comment on arrive à un résultat comme 17711 en lui donnant comme nombre 22.

Si je lis bien la phrase en bleue, on devrait faire nb-1 donc 20 + nb-2 donc 19, ça ferait alors 39, comment arrive-t'on à 17711 ?

Comment c'est méthode travaille-t'elle ?

Merci d'avance pour votre aide.

beegees