2013-09-29 5 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) 

Donc c'est le code que j'ai écrit. Je n'ai aucune idée de la raison pour laquelle il retourne None alors qu'à mon avis il devrait retourner la liste 'count'. De l'aide?Retour de la fonction Python Aucune. Pourquoi?

Répondre

9

Vous avez encore besoin d'une déclaration de retour lors de l'utilisation récursion, sinon la valeur de retour sera perdu:

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) # <-- 

D'ailleurs, cela est probablement la mauvaise approche pour le projet Euler # 14 :-) Pensez à utiliser une approche dynamic programming à la place (c'est tout ce que je vais dire pour ne pas gâcher le plaisir).

1

Vous devez utiliser le mot-clé return pour return une valeur provenant d'une fonction.

return problem14(n) 
Questions connexes