推荐答案
// www.javascriptcn.com code example
function fibonacci(n) {
if (n <= 0) return 0;
if (n === 1) return 1;
let a = 0, b = 1;
for (let i = 2; i <= n; i++) {
let temp = a + b;
a = b;
b = temp;
}
return b;
}本题详细解读
斐波那契数列简介
斐波那契数列是一个经典的数学问题,数列中的每个数字都是前两个数字的和。数列的前几项如下:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
代码解析
边界条件处理:
- 如果
n <= 0,返回0,因为斐波那契数列的第0项是0。 - 如果
n === 1,返回1,因为斐波那契数列的第1项是1。
- 如果
迭代计算:
- 使用两个变量
a和b来存储前两个斐波那契数。 - 通过循环从第2项开始计算,每次迭代更新
a和b的值,直到计算到第n项。
- 使用两个变量
返回结果:
- 最终返回
b,即第n项的斐波那契数。
- 最终返回
时间复杂度
- 该算法的时间复杂度为
O(n),因为只需要一次循环即可计算出第n项的斐波那契数。
空间复杂度
- 该算法的空间复杂度为
O(1),因为只使用了常数个额外空间来存储中间结果。
适用场景
- 该算法适用于需要计算斐波那契数列中某一项的场景,尤其是当
n较大时,迭代方法比递归方法更高效。