Моя функция возвращает None, даже если я печатаю над строкой, чего мне не хватает? - PullRequest
0 голосов
/ 31 мая 2019

Моя рекурсивная функция возвращает None, даже когда я печатаю переменную в строке выше

Когда я вызываю функцию, она печатает именно то, что я хочу, но возвращает None!

def nRound(vector, root):
    tempRoot = root
    a = vector.pop()
    b = vector.pop()
    if  a+b < 1.0:
        vector.append(a+b)
        rootn = Node(a+b)
        rootn.right = tempRoot
        rootn.left = Node(b)
        nRound(vector, rootn)

    else:    
        rootn = Node(a+b)
        rootn.right = tempRoot
        rootn.left = Node(b) 
        print(rootn)   
        return rootn 

Iне понимаю, почему он возвращает None вместо rootn.Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2019

Ваша функция рекурсивна, и только базовый случай возвращает значение. Значения от рекурсивного вызова не передаются вверх:

    nRound(vector, rootn)

Это означает, что внешний вызывающий абонент получит значение, только если функция сразу достигнет базового варианта. Вышеуказанная строка должна быть

    return nRound(vector, rootn)
...