【发布时间】:2014-03-28 17:20:28
【问题描述】:
findStart() 函数假设递归地搜索代表迷宫的二维列表。假设搜索此列表并找到列表中特定元素的 x 和 y(第一个和第二个索引)为“S”。但是,假设使用递归,并且 findStart() 方法不接受任何参数。我已经找到了如何使用迭代来完成它,但是我怎样才能使这个迭代变成递归呢?
def findStart():
for a in mazeList:
for x in a:
if x == "S":
xcoord = a.index("S")
ycoord = mazeList.index(a)
return (ycoord),(xcoord)
return -1,-1
迷宫:
####################################
#S# ## ######## # # # # #
# # # # # # #
# # ##### ## ###### # ####### # #
### # ## ## # # # #### #
# # # ####### # ### #E#
####################################
【问题讨论】:
-
这些是一些非常奇怪的要求。如果一个函数没有参数,如何确定递归的终止条件?您必须使用全局变量。似乎比迭代地查找坐标更麻烦。
-
您可以简单地创建一个执行递归的第二个(甚至是内部)函数。
-
我对 Python 不是很熟悉,但递归确实需要传入某种参数(除非您使用全局变量,但这是 IMO 的一种坏习惯)。然后该参数用于确定是否需要再次递归调用该函数。我能想到的唯一方法是创建
findStart()调用的第二个方法,它是递归的第二个方法(第二个方法当然有参数,可能是下一个坐标)。 -
昨天有人发了一个非常相似的问题(同样的迷宫,是python),可能有帮助:stackoverflow.com/q/22700130/2282538