我正在尝试测试自己对递归的理解能力,所以我给自己一个任务,以递归的方式进行跳转游戏练习
给定一个非负整数数组,您最初位于数组的第一个索引处,数组中的每个元素代表该位置处的最大跳转长度,您的目标是到达该数组中的最后一个索引最小跳数。
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))
如果有人可以告诉我我是否在正确的思维方向上
谢谢:)
答案 0 :(得分:0)
您的功能非常好,只需进行一些修复即可
:len(array) - 1
,而不是len(array)
。range(1, array[index] + 1)
而不是range(1, array[index])
。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