在这里,我使用简化代码来演示我遇到的问题:
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
?
答案 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)