给一个正整数num,返回小于或等于num的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。
代码:
function fibs(n){
var a=1,b=1;
var tmp=0;
var arr=[1,1];
for(var i=3;i<=n;i++){
tmp=b;
b=a+b;
arr.push(b);
a=tmp;
}//构造斐波那契数组
var sum=0;
for(var j=0;j<arr.length;j++){
if(arr[j] % 2 !== 0){
sum += arr[j];
}
}
return [arr[arr.length - 1],sum];
}
function sumFibs(num) {
var k=3;
while(fibs(k)[0] <= num){
k++;
}
return fibs(k-1)[1];
}