Не понимаю работу функции в python

в данном примере, функция принимает матрицу list[list[int]] и разворачивает ее по спирали с левого верхнего угла в list[int] и отдает его через output когда функция завершает работу.

в примере решения указан данный вариант, но он возвращает None за место значения.

def traverse_matrix(matrix: list[list[int]], output: list[int] = None) -> list[int]:
    if output is None:
        output = []
    if not len(matrix):
        return output

    matrix = list(zip(*matrix[::-1]))
    output.extend(matrix[0][::-1])
    traverse_matrix(matrix[1:], output)

у меня получилось вернуть output, путем данной манипуляции.

def traverse_matrix(matrix: list[list[int]], output: list[int] = None) -> list[int]:
    if output is None:
        output = []
    if not len(matrix):
        return

    matrix = list(zip(*matrix[::-1]))
    output.extend(matrix[0][::-1])
    traverse_matrix(matrix[1:], output)

    return output

Обьясните пожалуйста, почему в первом примере, функция не прерывает работу когда попадет на return, а после продолжает что то делать. Первый вариант видимо, когда то работал (возможно).

Как работают эти функции?


Ответы (0 шт):