Python 复发性fxn不返回什么';这是意料之中的

Python 复发性fxn不返回什么';这是意料之中的,python,arrays,python-3.x,tree,Python,Arrays,Python 3.x,Tree,所以我在研究一个黑客银行的简单问题。这其实很简单,但我发现了一些很小的东西,但我找不到,我希望你们能帮我找出问题所在 问题的名称是“在云端跳跃”,一个改写的总结是: “玩家可以跳到任何积云上,积云上的数字为 等于当前云的数目加上1或2 .玩家必须避开雷头。确定最小数量 从起始位置跳到最后一个位置所需的跳跃次数 云。赢得比赛总是有可能的 对于每一场游戏,你将得到一组编号为0的云,如果它们是 安全或1,如果必须避免。” 为了简化,您将得到一个0和1的数组,并且必须找到到达数组末尾所需的最小跳跃量。你

所以我在研究一个黑客银行的简单问题。这其实很简单,但我发现了一些很小的东西,但我找不到,我希望你们能帮我找出问题所在

问题的名称是“在云端跳跃”,一个改写的总结是:

“玩家可以跳到任何积云上,积云上的数字为 等于当前云的数目加上1或2

.玩家必须避开雷头。确定最小数量 从起始位置跳到最后一个位置所需的跳跃次数 云。赢得比赛总是有可能的

对于每一场游戏,你将得到一组编号为0的云,如果它们是 安全或1,如果必须避免。”

为了简化,您将得到一个0和1的数组,并且必须找到到达数组末尾所需的最小跳跃量。你一次只能跳1到2个点,你可以保证最后一片云是“安全的”

我立刻意识到这可以通过两种方式来解决,1。作为一个图论问题,2。作为一个树实现

我选择使用树实现

这是我的密码:

def jumpingOnClouds(c):
    if len(c) <= 1:
        print("at end of string")
        return 0
    
    elif c[0] == 1:
        print("dead end")
        return -1
    
    else:
        one = jumpingOnClouds(c[1:])    
        two = jumpingOnClouds(c[2:])
        if one == -1 and two > 0:
            print("chose 2")
            return two + 1
        elif two == -1 and one > 0:
            print("chose 1")
            return one + 1
        else:
            print("both were viable")
            return min(one, two) + 1

好的,这是对
one
two
的测试,在这里你会绊倒:

def跳线闭合(c):
如果len(c)=0:
#打印(“选择2”)
返回2+1
如果两个==-1和一个>=0:
#打印(“选择1”)
返回1+1
其他:
#印刷(“两者都可行”)
返回最小值(一,二)+1
对于[[0,0,0,0,1,0]、[0,0,1,0,0,1,0]、[0,0,0,1,0,0]、[0,1,0,0,0,0]中的游戏:
打印(f'{game}->{jumpingOnClouds(game)}')

输出如给定的

请使用示例输入和所需的输出更新您的问题。确保没有问题。顺便说一句,请不要将您的问题更改为正确,否则没有人能够找出问题所在以及必须更改哪些内容才能得到正确答案。谢谢您的快速回复。注意细节在这个领域很重要,对吧。一旦注意力不集中,一切都会在你身上爆发。顺便说一句,单元测试在这方面帮助很大。
[000010] -> 3
[0010010] -> 4
[000100] -> 3
[0100010] -> 3