J'ai deux solutions à ce même défi, ce classique de fibonacci défi que tout le monde sait comment le résoudre (même vos animaux de compagnie).
Je vous prie de bien de ne PAS suggérer d'autres solutions. Je veux juste comparer ces deux solutions. Des milliers de différentes solutions peuvent être trouvées avec la recherche.
Défi:
/*
0 1 2 3 4 5 6 7 8 9
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
fib(3) returns 2
fib(9) returns 34
and so on...
*/
Les deux solutions ci-dessous fonctionnent très bien. Ma seule question est:
Ne solution B de fonctionner plus lentement que d' Une solution? Parce que dans B , nous avons cette ligne ci-dessous:
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
L' length
la fonction de parcourir l'ensemble du tableau pour calculer le nombre d'éléments? Ou renvoie déjà à partir immédiatement?
La Solution:
function fib(n) {
const fiboArray = [0,1]
for(let i=2; i <= n; i++) {
fiboArray.push(fiboArray[i-2] + fiboArray[i-1])
}
return fiboArray[n]
}
console.log(fib(5))
Solution B:
function fib(n) {
const fibArr = [0, 1, 1]
if(n == 0) {
return 0
}
if(n == 1 || n == 2) {
return 1
}
if (n > 2) {
for (let i = 3; i <= n; i++) {
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
}
}
return fibArr[fibArr.length - 1]
}
console.log(fib(9))