Fibonacci序列Javascript做循环

时间:2016-05-06 13:42:44

标签: javascript do-while fibonacci

我一直在讨论这个主题的各种线程和语言,但我似乎找不到一个解决方案,用于设置一个条形码,以便在Javascript中使用do while循环将fibonacci序列设置为低于100。

var fbnci = [0, 1];
var i = 2;

do {
   // Add the fibonacci sequence: add previous to one before previous
   fbnci[i] = fbnci [i-2] + fbnci[i-1];
   console.log(fbnci[i]);
   fbnci[i]++;
} 
while (fbnci[i] < 100);

由于某种原因,上面的代码只运行一次。我应该将while条件设置为什么才能保持打印结果,直到达到最接近100的值?

3 个答案:

答案 0 :(得分:2)

代码中有错误,应该是:

var fbnci = [0, 1], max = 100, index = 1, next;
do {
  index++;
  next = fbnci[index-2] + fbnci[index-1];
  if (next <= max) {
      console.log(next);
      fbnci[index] = next;
  }
} while(next < max);

打印低于最大值

的所有fib数的解决方案

答案 1 :(得分:1)

对我来说,这是一个无限循环,一直打印出来1.你需要增加i而不是递增fbnci [i]:

i++代替fbnci[i] ++

此外,您仍然会在while条件下失败,因为您正在检查nil值。你想改变你的时间来检查fbnci [i-1]:

} while(fbnci[i-1]<100);

答案 2 :(得分:-1)

循环只发生一次,因为在时间i=3之前,你的while条件无法检查fbci[3] < 100 fbnci[3]是否为undefined

你可以这样做

var fbnci = [0, 1];
var i = 1;
while(fbnci[i] < 100) {
  fbnci.push(fbnci[i] + fbnci[i-1]);
  i++;
}

console.log(fbnci);