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