任务:给定一个正整数 num,返回所有小于或等于 num 的斐波那契奇数之和。
斐波那契数列中的前两个数字是 1 和 1。序列中的每个附加数字都是前两个数字的总和。斐波那契数列的前六个数字是 1、1、2、3、5 和 8。
例如,sumFibs(10) 应该返回 10,因为所有小于 10 的奇数斐波那契数都是 1、1、3 和 5。
这是在 freecodecamp 上。我看过示例,我知道我可以轻松复制它们,但我想编写自己的代码,有人可以解释为什么我得到这些 results我哪里出错了?谢谢。
function sumFibs(num) {
var arr = [0, 1, 1]; //array of fibonacci numbers
var fin = 0; //variable for final number
for(var i = 3;i < 35;i++)
{
arr[i] = arr[i-1] + arr[i-2];
}
// loop to make fibonacci numbers
for(var x = 0; x < arr.length-1; x++)
{
if(arr[x] <= num && (arr[x] % 2 === 0))
{
fin += arr[x];
}//if to check if array of fibonacci numbers[x] is less than num && if it is odd
}//loop to go through every fibonacci number
return fin;
}
sumFibs(1000);
最佳答案
当你有模运算时:
if(arr[x] <= num && (arr[x] % 2 === 0))
你在问两件事:
- 如果arr[x]值小于数字(检查)
- 如果 arr[x] 的值是偶数,而不是奇数。
这就是您的问题所在。
你应该使用:
if(arr[x] <= num && (arr[x] % 2 != 0))
关于javascript - 我需要对所有奇数斐波那契数求和,但仅适用于某些数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968125/