我遇到了以下問題。給定一條長度為 n 的走道,設計一個遞回演算法,告訴在走道上放置大小為 1 和大小為 3 的塊的方式的數量。我了解將遞回應用于此問題的策略-
- 對于人行道長度為 1、2 和 3 的情況,放入基本案例。
- 假設您已經計算出了在人行道上放置長度為 1 的塊的方法的數量
- 假設您已經計算出在人行道上放置長度為 3 的塊的方法的數量
- 添加 2) 和 3)
我的問題是我不知道如何撰寫 2) 和 3)。下面是我的代碼 -
def countPatterns(n):
if(n==1 or n==2):
return 1
elif(n==3):
return 2
elif(n<1):
return 0
else:
# return 2) and 3)
uj5u.com熱心網友回復:
這個問題與給定目標總和相同,您需要計算只需將數字 1 和 3 相加即可獲得目標總和的方法數。 示例:
sum = 4
ways:
1: 1 1 1 1
2: 1 3
3: 3 1
So your function for sum = 4 should return 3.
我認為你的方法是錯誤的。這是我的解決方案:
def numWays(sum):
if sum < 0:
return 0
if sum <= 2:
return 1
return numWays(sum - 1) numWays(sum - 3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/476142.html
上一篇:如何遍歷這個html表并從最后一個col不為空的行中獲取資料?
下一篇:無法驗證此遞回程式的輸出
