509. Fibonacci Number
這一題是所有介紹動態規劃最基礎的一個題目,題目要求斐波那契數 ,根據題目定義,可以很簡單的寫出遞迴的方法
遞迴
class Solution:
def fib(self, n: int) -> int:
if n == 0:
return 0
elif n == 1:
return 1
else:
return self.fib(n-1) + self.fib(n-2)可是這個方法存在著很多的重複的子問題,所以可以用動態規劃的方法做。
自頂向下
class Solution:
def fib(self, n: int) -> int:
table = defaultdict(int)
table[1] = 1
def traverse(n):
# recursive
if n <= 1:
return table[n]
if n in table:
return table[n]
else:
table[n] = self.fib(n - 1) + self.fib(n - 2)
return table[n]
return traverse(n)自底向上
減少記憶體
Last updated