递归跳转游戏

时间:2020-03-06 13:27:26

标签: python arrays recursion

我正在尝试测试自己对递归的理解能力,所以我给自己一个任务,以递归的方式进行跳转游戏练习

给定一个非负整数数组,您最初位于数组的第一个索引处,数组中的每个元素代表该位置处的最大跳转长度,您的目标是到达该数组中的最后一个索引最小跳数。

https://leetcode.com/problems/jump-game-ii/

我尝试了这部分代码,但是它没有出现在调试器中,因此我并没有真正看到问题所在

def function(array, index, counter):
    if index >= len(array):
        return counter
    min_step = float('inf')
    for i in range(1, array[index]):
        min_step = min(min_step, function(array, index + i, counter + 1))

    return min(min_step, function(array[1:], index, counter))

如果有人可以告诉我我是否在正确的思维方向上

谢谢:)

1 个答案:

答案 0 :(得分:0)

您的功能非常好,只需进行一些修复即可

  1. 您要转到最后一个索引,即len(array) - 1,而不是len(array)
  2. 您要允许跳转到最多并包括当前数组值,因此您需要range(1, array[index] + 1)而不是range(1, array[index])
  3. min_step已包含最少的跳转。我不确定您要返回什么,但是您可以return min_step

请牢记:

def function(array, index, counter):
    if index >= len(array) - 1:
        return counter
    min_step = float('inf')
    for i in range(1, array[index] + 1):
        min_step = min(min_step, function(array, index + i, counter + 1))

    return min_step