原题
查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
样例
给定 1,返回 0
给定 2,返回 1
给定 10,返回 34
解题思路
- 方法一: 递归求解
- 方法二:动态规划 - 记忆化搜索
完整代码
# Method 1
class Solution:
# @param n: an integer
# @return an integer f(n)
def fibonacci(self, n):
if n == 1:
return 0
elif n == 2 or n == 3:
return 1
else:
return self.fibonacci(n - 1) + self.fibonacci(n - 2)
# Method 2
class Solution:
# @param n: an integer
# @return an integer f(n)
def fibonacci(self, n):
T = [None] * (n+1) # T = [None, None, None, None ......]
T[0] = 0
T[1] = 1
for i in range (2, n+1):
T[i] = T[i-1] + T[i-2]
return T[n-1]