Я пишу алгоритм для подсчета общего количества узлов, которые имеет дерево. Это код:Ошибка «Не в функции» в рекурсивной функции
def tree_nodes(tree):
"""Given a tree, returns the total amount of nodes it has."""
def recursive_node_count(node):
"""Recursive count function."""
childs = tree[node]
if childs == None:
return 1
else:
nodes_so_far = 0
for i in xrange(len(childs)):
nodes_in_this_branch = recursive_node_count(childs[i])
nodes_so_far += nodes_in_this_branch
return nodes_so_far
root = tree['root']
total_nodes = recursive_node_count(root)
return total_nodes
tree
в основном словаре списков. Пример:
tree = {0: [1], 1: [2], 2: [3, 4], 3: None, 4: None, 'root': 0}
Когда я пытаюсь запустить свой код, это выход я получаю:
at Answer.py. not in a function on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in recursive_node_count on line 31
at Answer.py. in tree_nodes on line 36
at Answer.py. in <module> on line 96
Эти строки 31
(внутри определения функции), 36
(внутри определения) и 96
(звонок к определению) в исходном коде:
31: nodes_in_this_branch = recursive_node_count(childs[i])
36: total_nodes = recursive_node_count(root)
96: nodes = tree_nodes(tree)
Я проверил синтаксис, отступ, вкладки, пробелы, но я не могу найти ошибку. Я новичок в Python. Не могли бы вы, ребята, помочь мне?
Мне не удалось воспроизвести ошибку, которую вы имели, было ли что-то напечатанное до того, что вы опубликовали на выходе? –
Вот полный код: http://pastebin.com/mDyPPytn – renatov
Кстати, ответ на ваш вопрос заключается в том, что раньше ничего не было напечатано. У всего кода есть одна печать в последней строке. – renatov