Не срабатывает обычное добавление элемента в множество
Разбираюсь в учебном примере, но не догоняю в чем дело (((
Есть функция get_child
import random
def get_child(node):
return random.randint(0, node)
с помощью неё рекурсивно наполняем множество
def tree(parent):
child = get_child(parent)
if child == 0:
return {child}
else:
full_tree = tree(child)
return full_tree.union({parent})
например выводим print(tree(700)), все работает.
Но если использовать более напрашивающийся full_tree.add(parent) вместо full_tree.union({parent}), то будет выходить ошибка. Чем код снизу так плох в сравнении с кодом выше ?
def tree(parent):
child = get_child(parent)
if child == 0:
return {child}
else:
full_tree = tree(child)
return full_tree.add(parent)
Ошибка: AttributeError: 'NoneType' object has no attribute 'add'
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Просто метод add ничего не возвращает, в отличие от union.
Замените:
return full_tree.add(parent)
На:
full_tree.add(parent)
return full_tree
Ругаться уже не будет. Но правильность работы алгоритма в целом я не проверял.