斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
1 | F(0) = 0, F(1) = 1 |
给定 N,计算 F(N)。
示例 1:
1 | 输入:2 |
示例 2:
1 | 输入:3 |
示例 3:
1 | 输入:4 |
提示:0 ≤ N ≤ 30
方法一:递归
1 | class Solution: |
上述解法虽然形式简单,但时间复杂度为$O(2^n)$。
方法二:动态规划
1 | class Solution: |
该方法的时间复杂度和空间复杂度均为O(n)。
上述方法仍可以进一步优化
1 | class Solution: |
此时,时间复杂度不变,空间复杂度为O(1)。