求斐波那契数列
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 &
以上是关于求斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章