如果匹配时条件没有执行

时间:2018-07-19 04:49:30

标签: javascript

该功能是获取比给定的num参数小的斐波那契数字数组。

我使用while true循环将后面的数字推入数组,仅当后两个数字的总和大于给定的num时,我的中断条件才会停止。但是当它等于给定的num时,在某些情况下if条件仍然执行,当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;
 }

Ex:输入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 case随机执行失败? 我尝试了chrome控制台和Node.js,但都给出了相同的结果。

1 个答案:

答案 0 :(得分:0)

28657 + 46368 = 75025而不是70525