Матрица печати в спиральном порядке рекурсивноPython

Программы на Python
Anonymous
 Матрица печати в спиральном порядке рекурсивно

Сообщение Anonymous »

Все ответы, которые я нахожу, предлагают итеративные решения. Есть ли рекурсивный способ решения этой проблемы? У меня есть попытка, которая кажется довольно близкой, но еще не совсем правильная. < /P>

Предположим, у меня есть эта матрица: < /p>

matrix = [
["H", "E", "L", "L"],
["N", "I", "E", "I"],
["O", "G", "R", "F"],
["T", "S", "A", "E"]
]
< /code>

Моя функция должна распечатать ... < /p>

HELLIFEASTTONIERG
< /code>

Это мой код ... < /p>

def spiral(matrix, i, j):

if i < 0 or j < 0 or i >= len(matrix) or j >= len(matrix) or matrix[j] == False:
return False

print(matrix[j])
matrix[j] = False

if j < len(matrix) and j >= i:
spiral(matrix, i, j+1)

if i < len(matrix) and i = 0 and j = 0 and i >= j:
spiral(matrix, i-1, j)

spiral(matrix, 0, 0)
< /code>

он печатает несколько спирально ... < /p>

HELLIFEASTONGIER
< /code>

Но это неверно. Можно ли каким -то образом изменить мою функцию, чтобы получить правильный выход, потому что я чувствую, как будто я близко. Или есть другое рекурсивное решение?

Подробнее здесь: https://stackoverflow.com/questions/486 ... ecursively

Вернуться в «Python»