给一个正整数num,返回小于或等于num的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。
提示:此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出,推荐用数组来实现。
function sumFibs(num) {
var fibo=[1,1];
var oldSum=2;
while(true){
var item=fibo[0]+fibo[1];
if(num<item){
return oldSum;
}
if(item%2){
oldSum+=item;
}
fibo[0]=fibo[1];
fibo[1]=item;
}
return oldSum;
}
sumFibs(4);
网友评论