import java.util.HashMap; public class FibonacciRapide { private static int indentation; private static HashMap buffer = new HashMap<>(); public static long fibo(long indice) { if (indice == 0) { return 0; } else if (indice == 1) { return 1; } else { if (buffer.containsKey(indice)) { return buffer.get(indice); } for (int i = 0; i < indentation; i++) { System.out.print(" "); } System.out.println("Terme n°"+indice); indentation++; long result = fibo(indice - 1) + fibo(indice - 2); buffer.put(indice, result); for (int i = 0; i < indentation-1; i++) { System.out.print(" "); } indentation--; System.out.println("Résultat du calcul: "+result); return result; } } public static void main(String args[]) { long indicemax = Long.parseUnsignedLong(args[0]); indentation=0; System.out.println("Le terme n°" + indicemax + " de la suite de Fibonacci est égal à " + fibo(indicemax)); } }