Javascript中的斐波纳契数列

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

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

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

fib[ 3 ] = fib[ 3 - 1 ] + fib[ 3 - 2 ];  
fib[ 3 ] = fib[ 2 ] + fib[ 1 ]; 
fib[ 3 ] = fib[ 3 ];

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

var fib = [0,1,1,3]

我知道这是不正确的.

解决方法:

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

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

在JavaScript中,当使用像fib这样的数组时,fib [i]引用此数组中的第i个值,从0开始计数.因此fib [0]是数组中的第一个元素,fib [1]是第二个元素.数组等.

上一篇:如何在Python 3.x中强制整数输入?


下一篇:python – `a,b = b,a b`和`a = b之间的区别是什么? b =斐波那契的b` [复制]