我的老師給了我一套問題,讓我們考慮遞歸。其中之一,我們被賦予一個價值(郵資的成本)和一個可用的郵票列表。該練習涉及編寫一個遞歸函數,該函數返回郵票的最小長度列表,其總數等於郵資的總和值。郵票拼圖
解決這個問題的正確方法就是讓程序比較每一種可能性並返回最小長度的程序。如果是這種情況,我不確定如何爲它編寫程序,更不用說使用遞歸,因爲我一般都是Python和編程的新手。根據教師提供的線索,我想出了這樣的事情:
stampList=[1,4,7]
postage=10
def pickStamps(postage):
if postage==0: #base case 1
return ""
if postage<0: #base case 2
return none
else:
x=postage
for i in range(len(stampList)-1):
x=x-stampList[i]
return pickStamps(x)
我試圖有蟒蛇開始郵資的價值,減去結合每種面額才能到零,但我不確定如何將每種可能性都列入清單。在問題中提出,編寫另一個函數可能是明智的,該函數接受一個列表列表的參數,並返回列表中最小長度元素的索引,但我不確定如何實現該列表。有人能告訴我如何編寫這樣的代碼或解釋解決這個問題的最佳方法嗎?謝謝!
這是算法類嗎?你被要求做動態編程嗎?貪婪算法並不總能給你正確的答案 – inspectorG4dget
這是一個有趣的鏈接,瞭解動態編程和記憶http://interractivepython.org/runestone/static/pythonds/Recursion/DynamicProgramming.html – Scott