该功能是获取比给定的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,但都给出了相同的结果。
答案 0 :(得分:0)
28657 + 46368 = 75025而不是70525