Javascript中的斐波纳契数列

KMc*_*McA 7 javascript fibonacci

我对编程很新,并且很难理解这个Fibonacci序列示例:

var fib = [0, 1];
for (var i = 2; i < n; i++) {
    fib[ i ] = fib[ i - 1 ] + fib[ i - 2 ];
    console.log(fib);
}
Run Code Online (Sandbox Code Playgroud)

在第一次迭代中,索引2等于1,足够简单.但是,当我尝试i = 3的第二次迭代时,我得到:

fib[ 3 ] = fib[ 3 - 1 ] + fib[ 3 - 2 ];  
fib[ 3 ] = fib[ 2 ] + fib[ 1 ]; 
fib[ 3 ] = fib[ 3 ];
Run Code Online (Sandbox Code Playgroud)

我的思维在哪里出错了?到目前为止,我有:

var fib = [0,1,1,3]
Run Code Online (Sandbox Code Playgroud)

我知道这是不正确的.

mur*_*d99 7

当您推断代码时,您可以跳转fib[3] = fib[2] + fib[1]fib[3] = fib[3].这恰好是一个导致正确语句的转换,但它不是如何工作的.此代码将index 2处的值添加到index 处的值1.这与在索引处获取值不同3.这种推理应该起作用的方式如下:

你从一开始fib = [0, 1].然后在循环的第一次迭代中fib[2] = fib[1] + fib[0].这意味着您将index 0(恰好是0)的值添加到index 1(恰好是1)的值,以获取放在数组末尾的值(1).然后在第二次迭代中,你做了类似的事情,将索引1(静止1)的值添加到索引2(也1)的值得到2,这将在数组的末尾.这将继续,并在每次迭代时将数组中的最后两个值相加,以获得下一个值.

在JavaScript中,当使用类似数组时fib,fib[i]引用i此数组中的th值,从中计数0.那么fib[0]数组中的第一个元素是数组fib[1]中的第二个元素,依此类推.

  • 我觉得你做得很好.编程在概念上非常复杂,因此您不必担心陷入理解事物. (2认同)