Q值。给定正整数num
,返回小于或等于num
的所有奇数斐波那契数的总和。
我的解决方案。
function sumFiboOdds(num) {
var fib = [0, 1];
function searchFibo(i, limit) {
if (i > limit) {
return;
}
fib[i] = fib[i - 2] + fib[i - 1];
searchFibo(i + 1, limit);
}
searchFibo(2, num);
return fib;
}
var res = sumFiboOdds(1000); //"num"
var sum = 0;
for (var i = 1; i < res.length; i++) {
if (res[i] % 2 !== 0) {
sum += res[i];
}
}
console.log(sum); //answer is 11708364174233842, should be 1785!!
&#13;
有任何线索吗?也许是星期五,但我没有得到它?!!
答案 0 :(得分:1)
问题是你收集了前1000个斐波那契数字而不是只有1000个数字。
function sumFiboOdds(limit) {
var fib = [0,1];
function searchFibo(i) {
var next = fib[i-2]+fib[i-1];
if(next > limit) {
return;
}
fib[i]=next;
searchFibo(i+1);
}
searchFibo(2);
return fib;
}
var res = sumFiboOdds(1000);
var sum = res.reduce((s, n) => s + (n%2!==0 ? n : 0), 0);
console.log(sum);