使用递归构建各种树

时间:2019-01-04 00:08:38

标签: python recursion

我正在尝试根据给定的总质量生成一整套可能的树木。所有具有第一层质量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)

0 个答案:

没有答案