''' Returns number of pennies if pennies are doubled num_days times'''
def double_pennies(num_pennies, num_days):
total_pennies = 0
if num_days == 0:
return total_pennies
else:
total_pennies = double_pennies((num_pennies * 2), (num_days - 1));
return total_pennies
''' Program computes pennies if you have 1 penny today,'''
''' 2 pennies after one day, 4 after two days, and so on'''
starting_pennies = 1
user_days = 10
print('Number of pennies after', user_days, 'days: ', end="")
print(double_pennies(starting_pennies, user_days))
0
A
回答
0
輸出添加ELIF像這樣: -
total_pennies = num_pennies
if num_days == 0:
return total_pennies # or if you want return 0
elif (num_days == 1):
return total_pennies * 2
else:
total_pennies = double_pennies((num_pennies * 2), (num_days - 1));
return total_pennies
它的啓發,瞭解基本情況是什麼意思。基本案例並不意味着只有一個條件,當recusion應該終止;相反,這意味着這是可能的結束條件之一。
有了這個,你可以看到你的問題有兩個基本情況。
- 0時天過去了,你有沒有錢
- 1時一天又過去了,你有雙輸入的錢。
- 如果有更多的天數過去了,你的錢就比前一天增加了一倍。
所以你看到要編碼上述3種情況,你需要一個if - elif-else。
0
您的基本情況不正確。零日後你沒有零便士 - 你剛開始的時候就是這樣。
- 從1便士開始。加倍3倍。你有1 * 2 * 2 * 2 = 8便士。
- 從1便士開始。加倍2倍。你有1 * 2 * 2 = 4便士。
- 從1便士開始。把它加倍一次。你有1 * 2 = 2便士。
- 從1便士開始。加倍0倍。你有1便士。
你的基本情況應該僅僅是
if num_days == 0:
return num_pennies
無需初始化total_pennies
爲0,或者在所有的,真的。
相關問題
- 1. 列表遞歸基本情況
- 2. 問題遞歸不打基本情況
- 3. 遞歸函數有多少個基本情況?
- 4. JavaScript沒有明確的基本情況遞歸函數?
- 5. 基地href造成這種情況?
- 6. 這個遞歸函數的基本情況是什麼?它的工作原理是什麼?
- 7. 什麼是Coin Change使用遞歸的基本情況?
- 8. 我怎麼能寫這個算法的基本情況?
- 9. 歸併,問題與遞歸基本情況和訂購
- 10. 歸併排序基本情況(遞歸)解剖
- 11. 邏輯基本情況
- 12. 這個函數如何在不遞歸的情況下實現?
- 13. 確定遞歸Java程序的基本情況
- 14. 空字符串作爲BNF遞歸的基本情況?
- 15. 遞歸算法中的基本情況和時間複雜度
- 16. 基本的畫布使用情況android
- 17. 基本的DFS空間使用情況
- 18. Karatsuba乘法的基本情況
- 19. 交易情況的基本模式
- 20. 是遞歸函數的高階函數的特殊情況
- 21. 我應該如何處理ASP.NET MVC中的刪除情況
- 22. 這是我需要一個仿函數的情況嗎?
- 23. 如何處理unarchiver與這種情況..?
- 24. 如何處理這種情況?
- 25. ,如何處理這種情況?
- 26. 如何處理這種複製情況?
- 27. 爲什麼這個遞歸函數在達到基本情況時永不結束?
- 28. 基本航點使用情況
- 29. 故障基本情況哈斯克爾
- 30. 在這種情況下,我應該如何處理Clojure中的可變狀態?
如果你有1便士,並且你把它加倍0次,你有多少便士? – trentcl
@trentcl,如果我有1便士並將其加倍0倍,那麼結果爲零便士。 – Umubale
然後該算法是正確的。但是,如果零不是你想要的結果,你可能想要考慮這個問題有點困難。 – trentcl