递归不能附加列表

时间:2017-08-11 03:58:02

标签: python recursion

在这里,我使用简化代码来演示我遇到的问题:

def recTry(inList):
    print(inList)
    if len(inList) < 10:
        recTry(inList.append(1))

我希望通过递归它会像[1][1, 1][1, 1, 1]那样成长... 但实际上运行会产生这个:

>>> recTry([1])
[1]
None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in recTry
  File "<stdin>", line 3, in recTry
TypeError: object of type 'NoneType' has no len()
自第二次递归以来,

inList变为None。 那么我如何编码以使每个递归附加inList

2 个答案:

答案 0 :(得分:1)

您尝试使用inList.append(1)的结果调用函数,但它是None 试着:

if len(inList) < 10:
    inList.append(1)
    recTry(inList)

答案 1 :(得分:0)

在你的功能的第4行,

recTry(inList.append(1))
将<1>附加到现有列表后,

inList.append(1)返回None。这个None是您传递给recTry方法的内容。您可以尝试这样做,以便为每个递归附加inList

inList.append(1)     recTry(INLIST)