我已经完成了一项作业,其中函数的输出是斐波那契数组的最后一个数字。说实话,我在这个问题上陷入了困境,我在 stackoverflow 上的第二个 else if 语句中找到了代码。但我无法理解它到底是如何工作的。
这是代码:
const fibonacci = function(input) {
let n = Number(input);
if (n === 1) {
return 1;
} else if (n < 1) {
return "OOPS";
} else if (n > 1) {
let array = new Array(n); // <---- Starting here
let filled = array.fill(1);
let reduced = filled.reduce((acc, _, i) => {
acc.push((i <=1) ? i : acc[i-2] + acc[i-1])
return acc;
},[]);
return reduced[n - 1] + reduced[n - 2];
}
}
我的问题:为什么reduced
返回一个数组而不是单个值?既然它返回一个数组 - 为什么push
'ed 数字不会添加到初始数组中,其中已经有值了?input = 4
->那么我们就说吧filled = [1, 1, 1, 1]
。
陪伴而非守候
相关分类