Leedcode-斐波那契數

Junior_bond發表於2024-05-23

自己寫的,遞迴

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]

相關文章