自己寫的,遞迴
class Solution: def fib(self, n: int) -> int: # 如果 n 是 0,則返回 0,因為這是 Fibonacci 數列的定義 if n == 0: return 0 # 如果 n 是 1,則返回 1,因為這是 Fibonacci 數列的定義 elif n == 1: return 1 # 對於其他情況,遞迴地呼叫 fib 函式,計算 Fibonacci 數列的前兩個數並相加 else: return self.fib(n - 2) + self.fib(n - 1)
gpt最佳化,採用記憶最佳化:
class Solution: def __init__(self): # 初始化一個字典來儲存已經計算過的 Fibonacci 數列值 self.memo = {} def fib(self, n: int) -> int: # 如果 n 已經在 memo 中,直接返回其值 if n in self.memo: return self.memo[n] # 基本情況:如果 n 是 0 或 1,直接返回 n if n == 0: return 0 elif n == 1: return 1 # 遞迴計算 Fibonacci 數列值,並儲存在 memo 中 self.memo[n] = self.fib(n - 2) + self.fib(n - 1) return self.memo[n]