Maison  >  Article  >  développement back-end  >  Pourquoi ma fonction récursive Python ne renvoie-t-elle aucun résultat ?

Pourquoi ma fonction récursive Python ne renvoie-t-elle aucun résultat ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 14:34:30479parcourir

Why Does My Python Recursive Function Return None?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn