我试过这段代码,但它不起作用,结果为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