首页 > 解决方案 > 如果匹配时条件不执行

问题描述

函数是得到一个低于给定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,但都给出了相同的结果。

标签: javascript

解决方案


28657 + 46368 = 75025 不是 70525


推荐阅读