我試過這段代碼,但它不起作用,結果爲0.我已經知道遞歸的一個,但我正在嘗試使用for循環。最小步驟到一個Python
def minsteps(n):
memo =[0]*(n+1)
memo[0] = 0
memo[1] = 0
for i in range(2,n,1):
r = 1+memo[i-1]
if i%2 == 0:
r = min(r, 1+memo[i//2])
elif i%3 == 0:
r = min(r, 1+memo[i//3])
memo[i] = r
return memo[n]
此代碼是提供最小的步驟需要一定數目爲零下1 1個經受處理,分2和除法3. 例如: 6-> 2-> 1 [3] 或 6-> 3-> 1 [3] 或 6-> 5-> 4-> 2-> 4 [5]
因此,最小的步驟是3
請問你能解釋一下你的代碼應該做什麼。提供樣本輸入和預期輸出。如果您提供了有關您認爲問題出在哪裏的信息,也會有所幫助。值得你花時間閱讀[this](http://stackoverflow.com/help/mcve)。 – idjaw
我不確定你的函數做了什麼(或者應該做什麼),但是肯定由於範圍(2,n,1),你修改了項目到'n-1'(這是範圍的最後一個元素),而你最後拿着備忘錄[n]'。即使用'range(2,n + 1)'? – freakish
腳本中還缺少一件事是'print()'命令,編寫中間信息。 – Dominique