【发布时间】:2020-12-14 13:27:19
【问题描述】:
因此,代码是关于找到一个棋子从起点到终点所需的最少回合数。而且代码必须是递归的。 我对这段代码有疑问。 .我的问题是它并没有遍历所有堆栈,而是仅通过一个可能移动的“路径”,然后提供该路径所需的轮数。
例如使用 print(knight([1,1], [5,2], [])) 它返回 17 而不是 3
moves = ([1,2],[2,1],[-1,2],[-1,-2],[1,-2],[2,-1],[-2,1],[-2,-1])
def knight(start, goal, visited):
if start == goal:
return 0
else:
visited.append(start)
possibles =[]
makeable= []
for x in range(8):
possibles.append([start[0] + moves[x][0],start[1] + moves[x][1]])
for i in range(8):
if possibles[i] not in visited and possibles[i][0]<9 and possibles[i][1]<9 and possibles[i][0]>0 and possibles[i][1]>0:
makeable.append(knight(possibles[i],goal,visited))
if makeable:
return min(makeable)+1
else:
return 99
print(knight([1,1], [5,2], []))
【问题讨论】:
-
我想如果你多解释一下这段代码应该做什么以及它在你的理解中应该如何工作,会有更多的人愿意帮助你。此外,如果代码是用英文编写的,每个人都更容易理解代码。
-
谢谢,我做到了。希望对理解有帮助