我正在尝试根据给定的总质量生成一整套可能的树木。所有具有第一层质量1的树,对于它们下面的所有后续层,要么保持前一层的质量,要么将其增加1。(现在不考虑茎)。我认为递归会使我领悟到这一点,但是我似乎遇到了一些问题,直到最后产生一个1的细分支。
第一次通过后,读取错误:
File "test3.py", line 21, in <module>
for perm in tree(56):
TypeError: 'NoneType' object is not iterable
我不确定它要在哪里迭代。我对递归的经验很少,只有在Prolog中。这是我的程序:
def tree(total):
tree = [1]
current = 1
def build_up(total,current):
if total == 1:
tree.append(1)
print(tree)
return 1
elif total <= 0:
return 0
else:
for i in range(current,current+1):
tree.append(i)
current = i
total -= i
build_up(total,current)
build_up(total-1,current)
for perm in tree(56):
print(perm)