javascript - 如果匹配时条件不执行
问题描述
函数是得到一个低于给定num
参数的斐波那契数列。
我使用while
真正的循环将后面的数字推入数组,我的中断条件仅在最后 2 个数字的总和大于给定值时停止num
。但是当它等于给定的 时,if 条件在某些情况下仍然执行,当等于它num
时丢失了数字。num
function fibGen(num){
let fibo = [0,1,1],index=fibo.length-1;
while(1){
if((fibo[index]+fibo[index-1]) > num)break;
else{
fibo.push(fibo[index]+fibo[index-1]);
}
index++;
console.log(fibo[index]+fibo[index-1]);
}
console.log(fibo);
return fibo;
}
例如:输入 70525 数组的最后一个数字应该是 70525 ( 28657 + 46368 = 70525 等于 num= 70525 )但是循环在最后一个数字之前中断。但输入 13 有效
input : 10
output : [ 0, 1, 1, 2, 3, 5, 8 ]
input : 70525
output : [ 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368 ] //last number missing
input : 13
output : [ 0, 1, 1, 2, 3, 5, 8, 13 ]
为什么 if 案例随机执行失败?我尝试了 chrome 控制台和 nodejs,但都给出了相同的结果。
解决方案
28657 + 46368 = 75025 不是 70525
推荐阅读
- node.js - 使用 Sequelize 在 Postman 上发布表单数据引发约束错误
- python - 我无法在 PySimpleGUI 中使用菜单
- java - 为什么它在再次要求用户输入之前运行 3 次?
- java - 寻宝 java 二维数组
- ios - 错误:无法从 http://rubygems.org/ 下载数据 - 超时 (http://rubygems.org/specs.4.8.gz)
- flutter - Flutter:渲染在 android 设备上工作正常,但在不同大小的 iOS 设备上溢出
- emacs - 在掩埋缓冲区上的 goto-char 后 Emacs 没有移动点
- visual-studio - 如何修复这个 cmake ninja lexing 错误?
- amazon-cloudformation - 假定角色无权执行:route53:ListHostZonesByDomain;将 Route53 策略添加到 CodePipeline CodeBuildAction 的假定规则
- python - 有没有办法将多行代码放在 try except 块中,然后按顺序运行,即使抛出错误?