Функция не возвращает значения - PullRequest
0 голосов
/ 06 августа 2020
a=[1,2,3,4,5]
b=[1,2,3,4,5,5,5,5,5,55,5,5,5,5,5,5,5,5,5,5,5,5,5,5]
def func(a,b):
    for i in range(5):
        
        if a[i]>3:
            print(len(b))
            b.pop()
            if not b:
                print("cc")
                return "tt"
            func(a,b)
    if len(b)==2:
        return "l"
    return "t"

print(func(a,b))

Результат, который я получил для len (b), выглядит следующим образом. Почему tt не выводится и выдает ошибку для пустого списка? 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 cc 0

def hanoi(n,x,y,z):
    if n == 1:
        z.append(x.pop())
        return
    else:
        hanoi(n-1,x,z,y)
        hanoi(1,x,y,z)
        hanoi(n-1,y,x,z)
        
hanoi(len(A),A,B,C)

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

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Вы должны вернуть строку 12. func(a,b) на return func(a,b).

1 голос
/ 06 августа 2020

Результат func(a,b) при рекурсивном использовании никогда не возвращается. Измените строку func(a,b) на return func(a,b). Тогда вы получите свои tt.

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