python中的递归只是来回传递一些东西

时间:2015-09-09 13:58:34

标签: python python-2.7 recursion

我得到了一个我无法解决的任务:编写一个python shell中的递归函数,它返回一个对象有多少可能的方式来达到具有一定步数和给定量的终点起点,所有这些值都以整数形式给出。物体可以前后移动。例如,开始:1,停止:3,步骤:4 - >可能的方式= 4

到目前为止,我有这样的事情:

ostream

递归继续无限,我不确定 else 。 我觉得只需要做一些细微的改动,但我不知道如何完成它们。

2 个答案:

答案 0 :(得分:1)

我怀疑当moves为零但您尚未达到终点时需要额外的案例。否则,您最终可能会进入moves为负数的呼叫。

def wiggle(start, end, moves):
    if start == end and moves == 0:
        return 1
    elif start != end and moves == 0:
        return 0
    else:
        return wiggle(start-1, end, moves-1) + wiggle(start+1, end, moves-1)

print wiggle(1,3,4)

替代格式,相同的逻辑:

def wiggle(start, end, moves):
    if moves == 0:
        return 1 if start == end else 0
    else:
        return wiggle(start-1, end, moves-1) + wiggle(start+1, end, moves-1)

print wiggle(1,3,4)

答案 1 :(得分:0)

我认为你只是在没有动作的情况下错过了退出该功能的条件。

例如:

def wiggle(start, end, moves):
    if start == end and moves == 0:
        return 1
    elif moves == 0:
        return 0
    else:
        return wiggle(start-1, end, moves-1) + wiggle(start+1, end, moves-1)