下面是我的代码:
def stairs(steps, curr, count):
if curr <= steps:
for i in [1,2,3]:
curr = curr + i
if curr == steps:
print("Yes")
count += 1
stairs(steps,curr,count)
curr = curr - i
return count
print(stairs(3,0,0))
我认为我已经正确执行了递归,但是count中返回的最终值为1,在这种情况下应该为4。
我在要更新计数的块中添加了一条打印语句,并按预期将其打印4次,但是当递归结束时count的值为1。
如何跟踪此计数?还是我在这里想念什么?
答案 0 :(得分:1)
您可以按以下步骤修复它。只需将递归调用分配给您的计数即可。
def stairs(steps, curr, count):
if curr <= steps:
for i in [1,2,3]:
curr = curr + i
if curr == steps:
count = stairs(steps,curr,count+1)
else:
count = stairs(steps,curr,count)
curr = curr - i
return count
P.S。您的当前函数将在对大型输入进行递归调用时爆炸。您应该优化您的方法。