問題:我們有3種硬幣(1美元,2美元,5美元),我們將有這些硬幣的混合物,以賺取1000美元;我們想要 使用這些硬幣創建1000美元的所有可能方法的數量,並且我們還需要打印每種可能的方式遞歸解決方案?
我剛纔寫下面的代碼爲非遞歸風格的硬幣問題,它是好好工作。 現在我需要WITE做同樣的事情遞歸函數,但我只是想不出 我的遞歸function.any的想法基本情況寫一個遞歸函數?
i=0
for x in range(1001):
for y in range(501):
for z in range(201):
if x + 2*y + 5*z == 1000:
print(" {} coin $1 , {} coin $2 , {} coin $5".format(x,y,z))
i+=1
print("number of possibilities",i)
在每次遞歸時,您都會從要生成的總數中減去要添加到混合物中的硬幣的值。基本情況是當總數爲0. – Barmar
對於非遞歸解決方案,您不需要'z'循環。計算'ZZ = 1000-(X + 2 * Y)',並檢查是否zz''是由5整除如果是這樣,則必須以Z = ZZ/5'的溶液。 – Steve314
BTW - 遞歸解決方案將受益於記憶化,或者你可以使用表格/動態規劃的選擇 - 無論哪種方式,以改善不考慮不同的方式來達到同樣的硬幣計數的性能 - 顯然,如果你選擇,然後A $ 1 $ 2 ,這相當於選擇了2美元,然後是1美元。如果你不知道memoization或動態編程,但不要擔心。 – Steve314