使用递归进行寻路

时间:2018-12-19 21:15:41

标签: python arrays python-3.x list

给出

2-起点

3-目标

1-路径

0-墙

要求使用递归函数查找从23的路径。 但是,由于我也使用了for,所以我使用了递归,因此我不确定它是否可以算作递归函数。


我定义了两个函数:

  • buildPath(element, l)查找元素并将其替换为2如果它的邻居值包含2
  • clearPath(element, l)查找元素并将其替换为0,如果 未连接到目标索引。

我有以下代码:

 l = [0, 0, 0, 0, 0]
     [0, 2, 1, 1, 0]
     [0, 1, 0, 0, 0]
     [0, 1, 1, 3, 0]
     [0, 0, 0, 0, 0]

def buildPath(element, l):
    for i in range(len(l)):
        for j in range(len(l[i])):
            if element==l[i][j] and ((l[i-1][j] == 2) or (l[i+1][j] == 2) or (l[i][j-1] == 2) or (l[i][j+1] == 2)):
                l[i][j] = 2
                buildPath(element, l)
    l[1][1] = 8           
    return None

def clearPath(element, l):
    for i in range(len(l)):
        for j in range(len(l[i])):
            if element == l[i][j] and (l[i-1][j] + l[i+1][j] + l[i][j-1] + l[i][j+1] <= 2):
                l[i][j] = 0
                clearPath(element, l)


buildPath(1, l)
clearPath(2, l)

这是修改后的数组的样子:

[0, 0, 0, 0, 0]
[0, 8, 2, 0, 0]
[0, 2, 0, 0, 0]
[0, 2, 2, 3, 0]
[0, 0, 0, 0, 0]

如何将其转换为纯递归函数?

0 个答案:

没有答案