Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-02 14:34:30
original
581 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal