Поиск пути с помощью рекурсии - PullRequest
0 голосов
/ 20 декабря 2018

Дано

2 - начальная точка

3 - цель

1 - путь

0 - стена

Запрашивается найти путь от 2 до 3 с использованием рекурсивной функции.Однако я использовал рекурсию, так как я также использовал 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]

Как превратить это в чистыйрекурсивная функция?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...