var lapins = (n, b) => { let [immatures, adultes] = [1, 0]; for (let i = 0; i < n; i++) { immatures = adultes * b; // on écrase immatures trop tôt adultes += immatures; } return adultes; } var lapins = (n, b) => { let [immatures, adultes] = [1, 0]; for (let i = 0; i < n; i++) { temp = immatures // On mémorise valeur précédente immatures = b * adultes adultes += temp; // que l'on utilise ici } return adultes; } var lapins = (n, b) => { let [immatures, adultes] = [1, 0]; for (let i = 0; i < n; i++) { [immatures, adultes] = [adultes * b, immatures + adultes]; } return adultes; } lapins(8,12) lapins(0,4) lapins(4,0) var lapins = (n, b) => n <= 1 ? n : b * lapins(n - 2, b) + lapins(n - 1, b) lapins(5,3) lapins(8,12) var power = (m, n) => // Matrice m à la puissance n { [[a, b], [c, d]] = m; // On récupère les coefficients r = [[1, 0], [0, 1]] // Matrice unité for (i = 0; i < n; i++) // n multiplications matricielles { [e, f] = [a * r[0][0] + c * r[0][1], b * r[0][0] + d * r[0][1]]; [g, h] = [a * r[1][0] + c * r[1][1], b * r[1][0] + d * r[1][1]]; r = [[e, f], [g, h]]; }; return r } power([[1, 3],[1, 0]], 4) power([[1, 3],[1, 0]], 70) var lapins = (n, b) => power([[1, b],[1, 0]], n)[1][0] lapins(8, 12)