Pourquoi la fonction récursive python renvoie parfois aucune
Contrairement aux fonctions itératives, les fonctions récursives reposent sur leurs appels récursifs pour retourner les valeurs. Lorsque la fonction est appelée plusieurs fois, les valeurs de retour doivent être gérées de manière appropriée pour obtenir la sortie souhaitée.
Considérez le code python suivant:
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
print(a)
return a
gcdIter(a, b % a)
Cette fonction vise à trouver le plus grand diviseur commun de deux nombres en utilisant la récursivité. Cependant, il peut en retourner aucune pour certaines entrées car la valeur de retour de l'appel récursive n'est pas gérée correctement.
print(gcdIter(306, 136)) # Returns None
print(gcdIter(42, 84)) # Returns 42
Pour résoudre ce problème, le code doit transmettre la valeur de retour de l'appel récursif à la fonction principale. En modifiant la ligne gcditer (a, b% a) pour retourner gcditer (a, b% a), la fonction renverra correctement le plus grand diviseur commun.
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
print(a)
return a
return gcdIter(a, b % a)
Alternativement, la fonction peut être réécrite plus compacte comme:
def gcd_iter(a, b):
return gcd_iter(b, a % b) if b else abs(a)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3