算法脚本:对所有奇数斐波那契数求和
Algorithm Scripting: Sum All Odd Fibonacci Numbers
我正在尝试解决这个问题。
" 给定一个正整数 num ,return所有小于或等于 num 的斐波那契奇数之和。
斐波那契数列的前两个数是 1 和 1。数列中每增加一个数都是前两个数的和。斐波那契数列的前六个数字是 1, 1, 2, 3, 5 和 8.
例如,sumFibs(10) 应该 return 10,因为所有小于或等于 10 的斐波那契奇数都是 1、1、3 和 5。
这是我的解决方案,我只是不明白为什么它满足除最后一个以外的所有陈述。我找不到错误。
如果有任何帮助,我将不胜感激!
function sumFibs(num) {
if(num === 1){
return 1;
}else if(num ===2){
return 2;
}
let arr=[1,1],
curr =1,
prev =1;
for(let i = 2; i<num;i++){
let next = curr + prev;
prev = curr;
curr= next;
if(curr<num && curr%2!==0){
arr.push(curr);
}
}
return arr.reduce((a,b)=>a+b);
}
console.log(sumFibs(75024));
console.log(sumFibs(75025));
它给了我相同的结果,即使它们应该不同。
您应该添加“小于或等于 num”的数字。您只对数字求和 < num.
错误似乎是条件语句 if(curr<num && curr%2!==0)
不满足上面的说明,如下所示:
return所有小于等于num的斐波那契奇数之和
因此,当我们使用 if(curr<num && curr%2!==0)
作为条件语句时,我们不包括 75025,因为它不表示小于变量 num 的数字。
这就是我们发现错误的地方。它应该包括不仅小于而且等于 num 的数字,在本例中为 num 是 75025,由于条件语句不正确,它没有被包含在斐波那契奇数组中。
您只考虑小于 num 的数字,但任务描述说小于或等于。 1 的基本情况也是错误的。实际上你一开始不需要基本案例。而不是 for 循环,你应该使用 while 循环。
我正在尝试解决这个问题。
" 给定一个正整数 num ,return所有小于或等于 num 的斐波那契奇数之和。
斐波那契数列的前两个数是 1 和 1。数列中每增加一个数都是前两个数的和。斐波那契数列的前六个数字是 1, 1, 2, 3, 5 和 8.
例如,sumFibs(10) 应该 return 10,因为所有小于或等于 10 的斐波那契奇数都是 1、1、3 和 5。
这是我的解决方案,我只是不明白为什么它满足除最后一个以外的所有陈述。我找不到错误。 如果有任何帮助,我将不胜感激!
function sumFibs(num) {
if(num === 1){
return 1;
}else if(num ===2){
return 2;
}
let arr=[1,1],
curr =1,
prev =1;
for(let i = 2; i<num;i++){
let next = curr + prev;
prev = curr;
curr= next;
if(curr<num && curr%2!==0){
arr.push(curr);
}
}
return arr.reduce((a,b)=>a+b);
}
console.log(sumFibs(75024));
console.log(sumFibs(75025));
它给了我相同的结果,即使它们应该不同。
您应该添加“小于或等于 num”的数字。您只对数字求和 < num.
错误似乎是条件语句 if(curr<num && curr%2!==0)
不满足上面的说明,如下所示:
return所有小于等于num的斐波那契奇数之和
因此,当我们使用 if(curr<num && curr%2!==0)
作为条件语句时,我们不包括 75025,因为它不表示小于变量 num 的数字。
这就是我们发现错误的地方。它应该包括不仅小于而且等于 num 的数字,在本例中为 num 是 75025,由于条件语句不正确,它没有被包含在斐波那契奇数组中。
您只考虑小于 num 的数字,但任务描述说小于或等于。 1 的基本情况也是错误的。实际上你一开始不需要基本案例。而不是 for 循环,你应该使用 while 循环。