目前看到的解都是把遞迴用在計算第 n 個費波納契數,用遞迴做遞迴樹的好像沒人分享
分享一下我的寫法
我是和計算計算第 n 個費波納契數的函數分開做的
def gen_fib_tree(nums: list): print(' '.join(f'f({i})' for i in nums)) if all(i < 2 for i in nums): return temp = [] for i in range(len(nums)): if nums[i] < 2: temp.append(nums[i]) else: temp.extend([nums[i] - 1, nums[i] - 2]) return gen_fib_tree(temp)
題外話,如果想用題目提供的函數計算費波那契數,又想提高效率,可以參考我在 k402 寫的解題報告
連結點我
基本邏輯就是已經算過、已經知道答案的,就直接把之前算的答案拿出來,不再重新計算