Неожиданный результат в обратной печати связанного списка с использованием рекурсии - PullRequest
0 голосов
/ 22 сентября 2019

Я напечатал связанный список в обратном порядке, используя рекурсию.Я поиграл с кодом и добавил еще один оператор print над рекурсивным вызовом и ожидал, что он напечатает связанный список в исходном порядке, но он напечатает только первый элемент списка.Мой связанный список содержит следующие данные

0 --> 1 --> 2 --> 3 --> 4 --> 5 --> 6 --> 

Класс связанного списка -

class node_obj:
def __init__(self, d):
    self.data = d
    self.next = None

Моя рекурсивная функция -

def recursive_revers1(head):
if head != None:
    print('--------', head.data)
    recursive_rev(head.next)
    print(head.data)

recursive_revers1(head)

Вывод:

-------- 0
6
5
4
3
2
1
0

Связанный список корректно переворачивается, но почему первый оператор печати работает только один?Я ожидал, что он напечатает весь список в оригинальном порядке.

1 Ответ

1 голос
/ 22 сентября 2019

Вы вызываете неправильную функцию внутри рекурсии: recursive_rev (возможно, ранняя версия кода), но ваша рекурсивная функция теперь называется recursive_revers1.Это работает для меня:

def recursive_revers1(head):
    if head: # recommended way to ask if something is not None
        print('--------', head.data)
        recursive_revers1(head.next) # here was the mistake
        print(head.data)

recursive_revers1(head)

Теперь в консоли мы получаем:

-------- 0
-------- 1
-------- 2
-------- 3
-------- 4
-------- 5
-------- 6
6
5
4
3
2
1
0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...