Pourquoi la fonction récursive Python ne renvoie aucun
En Python, les fonctions récursives peuvent rencontrer un problème où elles renvoient Aucun de manière inattendue. Explorons un exemple spécifique pour comprendre la cause et la solution.
Considérez l'extrait de code suivant :
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) # Assign smaller value to 'a' and larger value to 'b' if b % a == 0: print(a) return a gcdIter(a, b % a)</code>
Ce code est destiné à calculer le plus grand diviseur commun (PGCD) en utilisant l'approche itérative. . Cependant, il renvoie incorrectement None dans certains cas.
Pour comprendre pourquoi, examinons l'appel récursif :
<code class="python">gcdIter(a, b % a)</code>
Cet appel effectue un autre appel récursif à la fonction gcdIter avec les valeurs mises à jour d'un et b. Cependant, la valeur de retour de cet appel récursif est ignorée, ce qui entraîne le retour de None par la fonction gcdIter d'origine.
La solution est de renvoyer le résultat de l'appel récursif. La version correcte de la fonction ressemble à ceci :
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) # Assign smaller value to 'a' and larger value to 'b' if b % a == 0: return a return gcdIter(a, b % a)</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!