TLDR: Поскольку вы используете результат recursive_func
, он всегда должен return
его tree
.
recursive_func
имеет три важных момента для этой проблемы:
def recursive_func(tree, n):
if n == 0:
return tree # 1.
else:
permutations = get_permutations()
for permutation in permutations:
child_tree = recursive_func(Tree(permutation), n-1) # 2.
tree.addChild(child_tree)
# 3.
Теперь 1.
определяет, что функция иногда возвращает Tree
. Это соответствует 2.
, который всегда ожидает, что функция вернет Tree
. Однако оба конфликтуют с 3.
, который неявно возвращает None
, когда вторая ветвь завершена.
Поскольку первая ветвь пуста, кроме return
, оба 1.
и 3.
могут свернуть на один путь, который всегда возвращает Tree
.
def recursive_func(tree, n):
if n > 0:
permutations = get_permutations()
for permutation in permutations:
child_tree = recursive_func(Tree(permutation), n-1)
tree.addChild(child_tree)
return tree