我有两个解决方案,以同样的挑战,这个经典的斐波那契挑战,每个人都知道如何解决这个问题(即使是你的宠物)。
我恳请你不要提出任何其他的解决方案。 我只是想比较一下这两个解决方案。 成千上万个不同的解决方案,可以发现与搜索。
挑战:
/*
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...
*/
这两个解决方案下工作的罚款。 我唯一的问题是:
不 解决方案B 的运行速度慢于 解决方案的一个? 因为在 B 我们这行如下:
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
不会的 length
能穿过整个阵列计算数量的项目? 或者已经返回,从立即?
解决方案的一个:
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))
方案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))