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 :
ce que je ne comprends pas, c'est la méthode fibonacci:
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; } }
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
Partager