求斐波那契数列

Posted 沿着路走到底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求斐波那契数列相关的知识,希望对你有一定的参考价值。

斐波那契数列

- `f(0) = 0`

- `f(1) = 1`

- `f(n) = f(n - 1) + f(n - 2)` 前两个值的和

递归

/**
 * 斐波那契数列(递归)
 * @param n n
 */
function fibonacci(n: number): number 
    if (n <= 0) return 0
    if (n === 1) return 1

    return fibonacci(n - 1) + fibonacci(n - 2)

递归计算

但这种方式会导致很多重复计算。

时间复杂度是 `O(2^n)` ,爆炸式增长,不可用。(可以试试 `n: 100` ,程序会卡死)

优化

不用递归,用循环,

记录中间结果。

时间复杂度降低到 `O(n)`

/**
 * 斐波那契数列(循环)
 * @param n n
 */
export function fibonacci(n: number): number 
    if (n <= 0) return 0
    if (n === 1) return 1

    let n1 &

以上是关于求斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

编写一递归函数求斐波那契数列的前40项

python递归求斐波那契数列前10项

求斐波那契数列

用递归函数求斐波那契数列的第n项的值

java用递归编程求斐波那契数列第n项

求斐波那契数列的第n个数(递归非递归)