小明受邀參加朋友的晚會Part,形式爲自助餐,已經目前有N種食物編號1-N依次擺放在一行,小明可以從中挑選食物,但必須符合以下條件
如果選中了某個編號爲X的食物,則兩邊的食物不能選中(即x-1,x+1的食物不能選)
小明可以選擇任意個食物
小明有多少個選擇?
choice_food.py
"""
方法1:
n = int(input())
num = [0] * (n + 1)
num[1] = 2
num[2] = 3
for i in range(3, n+1):
num[i] = num[i-1] + num[i-2]
print(num[n])
"""
from functools import wraps
def cache(func): # 裝飾器
store = {} # 外部變量
@wraps(func)
# 按照習慣,有時候單個獨立下劃線是用作一個名字,來表示某個變量是臨時的或無關緊要的
def _(n): # 閉包函數
if n in store:
return store[n]
else:
res = func(n)
store[n] = res
return res
return _
@cache
def get_choices(num):
if num <= 1:
return num + 1
return get_choices(num - 1) + get_choices(num - 2)
if __name__ == '__main__':
food_num = input()
print(get_choices(int(food_num)))