2013-09-29 3 views
1
count = [] 

def problem14(n): 
    count.append(n) 
    if n == 1: 
     return count 
    if n % 2 == 0: 
     n = n/2 
     problem14(n) 
    else: 
     n = 3*n + 1 
     problem14(n) 


print problem14(13) 

Так что это код, который я написал. Я понятия не имею, почему он возвращает None, пока, на мой взгляд, он должен возвращать список «count». Любая помощь?Функция возврата Python None. Зачем?

ответ

9

Вам все еще нужно оператор возврата при использовании рекурсии, в противном случае возвращаемое значение будет потеряно:

def problem14(n): 
    count.append(n) 
    if n == 1: 
     return count 
    if n % 2 == 0: 
     n = n/2 
     return problem14(n) # <-- 
    else: 
     n = 3*n + 1 
     return problem14(n) # <-- 

Кстати, это, вероятно, неправильный подход для проекта Эйлера # 14 :-) Подумайте об использовании подхода dynamic programming (это все, что я скажу, чтобы не испортить веселье).

1

Вы должны использовать ключевое слово return, чтобы return значение от функции.

return problem14(n) 
Смежные вопросы