【发布时间】:2016-10-28 19:16:25
【问题描述】:
我正在努力的挑战:
对所有奇数斐波那契数求和
给定一个正整数 num,返回所有小于或等于 num 的奇数斐波那契数的总和。
斐波那契数列的前两个数是 1 和 1。数列中的每个附加数都是前两个数的和。斐波那契数列的前六个数字是 1、1、2、3、5 和 8。
例如,sumFibs(10) 应该返回 10,因为小于 10 的所有奇数斐波那契数都是 1、1、3 和 5。
前:
sumFibs(1000) 应该返回 1785。
sumFibs(4000000) 应该返回 4613732。
sumFibs(4) 应该返回 5。
这就是我所拥有的:
function sumFibs(num) {
if (num === 1) {return 1;}
var fibList = [1, 1];
for(i=2; i < num; i++){
if (fibList[i-1] + fibList[i-2] > num){
break;
}
//else if ((fibList[i-1] + fibList[i-2])%2 !== 0){
fibList.push(fibList[i-1] + fibList[i-2]);
//}
}
return fibList.reduce(function(a, b){return a+b;});
}
它给了我斐波那契数列的总和,偶数和奇数,直到小于或等于输入数字的值。
然而,部分挑战是仅将奇数相加。最初,我认为这很容易,但我的最大努力都失败了。我的代码中不起作用的部分被注释掉了。任何等于或大于 4 的输入都会产生“NaN”作为结果。
有人可以帮忙吗?非常感谢。
【问题讨论】:
标签: javascript arrays loops if-statement