否则if语句对我来说似乎是合理的,但会破坏代码
Else if statement seems rational to me but breaks code
我正在努力的挑战:
和所有奇数斐波那契数
给定一个正整数num,返回小于等于num的所有奇数Fibonacci数的和。
斐波那契数列的前两个数是1和1。数列中每增加一个数都是前两个数的和。斐波那契数列的前六个数字分别是1、1、2、3、5和8。
例如,sumFibs(10)应该返回10,因为所有小于10的斐波那契奇数都是1,1,3和5。
,
sumFibs(1000)应该返回1785。
sumFibs(4000000)应该返回4613732.
sumFibs(4)应该返回5.
这是我的工作:
function sumFibs(num) {
if (num === 1) {return 1;}
var fibList = [1, 1];
for(i=2; i < num; i++){
if (fibList[i-1] + fibList[i-2] > num){
break;
}
//else if ((fibList[i-1] + fibList[i-2])%2 !== 0){
fibList.push(fibList[i-1] + fibList[i-2]);
//}
}
return fibList.reduce(function(a, b){return a+b;});
}
它给出了斐波那契数列的和,包括偶数和奇数,直到小于或等于输入的数字。
然而,挑战的一部分是只把奇数加起来。起初,我以为这很容易,但我最大的努力都失败了。我的代码中不能工作的部分被注释掉了。任何等于或大于等于4的输入结果为"NaN"。
有人能帮忙吗?非常感谢。
如果你只想求和奇数斐波那契数,那么你可以调整你在reduce
中使用的lambda来反映这一点。
function sumFibs(num) {
if (num === 1) {return 1;}
var fibList = [1, 1];
for(i=2; i < num; i++){
if (fibList[i-1] + fibList[i-2] > num){
break;
}
fibList.push(fibList[i-1] + fibList[i-2]);
}
return fibList.reduce(function(a, b){
return a + b%2 * b;
});
}
注释代码不能工作的原因是为了首先计算斐波那契数,您必须跟踪所有,而不仅仅是奇数。例如,要得到5
,您必须计算2 + 3
,这只有在您首先记录了2
时才能做到。
你得到NaN
而不是其他错误的数字的原因是你的循环期望fibList[i - 1]
被一个实数填充。i
每次迭代都加1,但数组并不总是得到一个新元素。在某种意义上,i
超出了数组的大小,所以加法操作数不是实数的和。
相关文章:
- 使用解析为javascript源的.php,如何使用条件语句将javascript代码封装在php括号之间
- 正在清理三元语句中的代码
- PHP代码中实现的JavaScript |if语句不起作用
- 在 HTML 代码中调用 PHP 函数,在 PHP echo 语句中
- 此 JavaScript 代码无法正常工作(if-else 语句)
- 通过找到一种删除许多 if 语句的方法来简化代码
- ReactJS:在带有 ajax 调用的 .map() 语句完成后执行代码
- PHP、JS和带有if-else语句的代码点火器脚本
- 重用if语句中的代码.(功能内部的功能是不良做法吗?)
- 嵌套if语句中的else语句.这段代码如何知道要执行哪个else语句
- 简化此If语句,使其不会't重复代码-Javascript
- Javascript:Coderbyte挑战4:字母变化:帮助分析代码:这是如何大写元音的,以及何时执行else语句
- 使用SQLite FTS3,如何连接或嵌套SELECT语句以获得行加代码段
- 动态更改测试中代码覆盖率的require语句的更好方法
- 如何发送一个语句以用作代码中的命令
- 难以理解语句代码
- JQuery 悬停代码:添加 If 语句会破坏它
- 带有 if 语句的 JavaScript 在 C# 后面的代码中触发按钮 asp.net
- if 语句中的一部分 JavaScript 代码运行,而同一块中的其余代码不执行.我在这里错过了什么
- 如何否定“if”中的代码语句块,如'如果不是,则.'