求斐波那契数列

斐波那契数列

- `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 &

猜你喜欢

转载自blog.csdn.net/m0_38066007/article/details/125028342
今日推荐