【发布时间】:2015-07-13 16:18:03
【问题描述】:
所以我正在尝试开发一个公式,将所有奇数斐波那契数相加,直到并包括给定的数字。
例如:
- 给定数字是 4。那么结果应该是 5(奇数斐波那契数是 1、1、3)。
目前这是我的代码:
function sumFibs(num) {
var sum = 0;
for(i=0,j=1,k=0; k<=num;i=j,j=x,k++) {
x = i + j;
if (x%2 !== 0) {
sum +=x;
if (sum >= sum) {
break;
}
}
}
return sum;
}
sumFibs(4);
显然代码不起作用。如果我删除 (if sum >= sum) break 语句,它会创建一个无限循环。我从这里的另一篇文章中获取了 for 循环,其中给出了一个公式来创建一个斐波那契数列,但是我在生成该数字后遇到了困难,我该如何添加它。我尝试这样做的方法是检查模数是否不为 0(表示它是奇数)。
感谢您的帮助。
【问题讨论】:
-
if (sum >= sum) {将总是评估为真,那条线试图做什么? -
哦等等,应该是
sum >= num- 现在那个会更有意义 -
删除
if和breakdoes not create 无限循环 -
将
for(i=0,j=1,k=0;更改为for(var i=0,j=1,k=0;否则它将伸出并修改i,j,k的全局值。 (也var x = i + j;) -
使用正常的方法计算斐波那契数列,直到你想要的数字。然后把所有的奇数加起来。如果所需的数字很大,可能会占用一些空间。
标签: javascript math sum fibonacci