2014-11-17 3 views
0

Я пытался понять рекурсивную функцию, и для этого я чувствовал, что мне нужно создать для себя меньший пример. Мой собственный код, однако, бросает мне ошибку NoneType. У меня нет цели с моей функцией, я просто хочу знать, почему возникает ошибка?Рекурсивная функция: «Объект 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 

ответ

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 
+0

Ой, извините за это. Благодаря! – PandaDeTapas

Смежные вопросы