如果是您 ,您會怎樣使用遞歸實現的呢,大神可以提出指正。
# 定義函數cost,并傳遞參數money,daydef cost(money,day): # 若money小于等于0 if money <= 0: # 返回"錢花完了,花了{day}天" return f"錢花完了,花了{day}天" # 否則 else: # 參數day計數加1,day+=1 相當于 day = day+1 day += 1 # money除2,取整 money = money // 2 # 返回遞歸后的結果 return cost(money,day) # 定義變量money為10000,day為0money = 10000day = 0# 調用函數cost,并打印結果print(cost(money,day))
第2-14行,定義函數cost(money,day)部分
第17-18行 定義變量money為10000,day為0
第20行 print()語句,首先執行括號內的部分,調用cost函數,并傳遞money=10000,day=0到函數內部
函數內部:
第4行 if語句判斷money=10000 <=0不成立,則跳轉到第8行else語句,執行第10行day加1,此時day=1,money = money // 2 此時money=5000 ,執行第14行 再次調用函數cost,此時傳遞money=5000,day=1
第4行 if語句判斷money=5000 <=0不成立,則跳轉到第8行else語句,執行第10行day加1,此時day=2,money = money // 2 此時money=2500 ,執行第14行 再次調用函數cost,此時傳遞money=2500,day=2
函數內部:
第4行 if語句判斷money=2500 <=0不成立,則跳轉到第8行else語句,執行第10行day加1,此時day=3,money = money // 2 此時money=1250 ,執行第14行 再次調用函數cost,此時傳遞money=1250,day=3
以此類推········當調用了第14次函數cost后,money=0,day=14,在第4行if判斷money<=0成立,返回“錢花完了,花了14天”
關注收藏不迷路,私信共享學習資料,共同學習,共同進步。