Mám dve riešenia rovnakou výzvou, že tento klasický fibonacciho napadnúť, že každý vie, ako to vyriešiť (dokonca aj vaše miláčikov).
Som láskavo požiadať vás, aby ste navrhnúť iné riešenie. Ja len chcem porovnať tieto dve riešenia. Tisíce rôznych riešení možno nájsť pomocou vyhľadávania.
Výzva:
/*
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...
*/
Obe riešenia, sú uvedené nižšie v poriadku. Moja jediná otázka je:
Nemá riešenie, B bežať pomalšie ako riešenie? Pretože v B máme tento riadok nižšie:
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
Sa length
funkcia prejsť celé pole vypočítať počet položiek? Alebo už vracia z okamžite?
Riešenie:
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))
Riešenie 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))