我试图理解一个递归函数,为了做到这一点,我觉得我需要为自己创建一个更小的例子。但是,我自己的代码却给我一个NoneType
错误。我的功能并没有真正的目的,我只是想知道错误发生的原因?
def recursive(seq):
if not seq:
return [seq]
else:
seq2=seq[1:]
print('seq2= ',seq2)
print('Type seq2 = ',type(seq2))
for i in recursive(seq2):
print('hi')
输入:
recursive('123')
输出:
seq2= 23
Type seq2 = <class 'str'>
seq2= 3
Type seq2 = <class 'str'>
seq2=
Type seq2 = <class 'str'>
hi
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
recursive('123')
File "C:/Python34/myreqursive(del).py", line 8, in recursive
for i in recursive(seq2):
File "C:/Python34/myreqursive(del).py", line 8, in recursive
for i in recursive(seq2):
TypeError: 'NoneType' object is not iterable
答案 0 :(得分:2)
您的else
分支没有返回任何内容,因此会提供默认返回值None
。
而不是仅仅打印,至少返回递归结果:
def recursive(seq):
if not seq:
return [seq]
else:
seq2=seq[1:]
print('seq2= ',seq2)
print('Type seq2 = ',type(seq2))
recursive_result = recursive(seq2)
for i in recursive_result:
print('hi')
return recursive_result