Je n'arrive pas à comprendre pourquoi cette fonction python renvoie None si elle s'appelle récursivement.Fonction Python renvoyée Aucune après la récursion
Cela faisait partie de ma solution à un problème de Project Euler. J'ai résolu le problème de toute façon, mais cela m'énerve encore car la fonction semble fonctionner correctement - et il semble connaître la valeur de la variable que je voulais retourner.
def next_prime(previous):
if previous % 2 == 0:
candidate = previous + 1
else:
candidate = previous + 2
print "trying", candidate
prime = True
for div in range(2,candidate//2,1):
if candidate % div == 0:
prime = False
print candidate, "is not prime - divisible by", div
next_prime(candidate)
break
if prime is True:
print candidate, "is prime"
#return candidate
last = 896576
print "After", last, ", the next prime is..."
next_prime(last)
Cela donne:
After 896576 , the next prime is...
trying 896577
896577 is not prime - divisible by 3
trying 896579
896579 is not prime - divisible by 701
trying 896581
896581 is not prime - divisible by 7
trying 896583
896583 is not prime - divisible by 3
trying 896585
896585 is not prime - divisible by 5
trying 896587
896587 is prime
Mais si je décommenter la déclaration de retour, il retourne une seule valeur si le premier essai est premier, sinon il retourne Aucun.
Vous n'utilisez pas la valeur de votre appel récursif, est-ce normal? – Tobu