问题:
给一个正整数num
,返回小于或等于num
的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。
提示:不能用递归来实现斐波纳契数列。因为当num
较大时,内存会溢出,推荐用数组来实现。
代码如下:
(数组方式实现)
function sumFibs(num) {
var fibs = [1,1];
var i = 2;
var newFib = fibs[i-1] + fibs[i-2];
while(newFib <= num){
fibs.push(newFib);
i++;
newFib = fibs[i-1] + fibs[i-2];
}
var sum = 0;
for(var j = 0;j < fibs.length;j++)
{
if(fibs[j] % 2 !== 0)
{
sum += fibs[j];
}
}
return sum;
}