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

Susan Sarandon
Libérer: 2024-11-03 18:22:29
original
749 Les gens l'ont consulté

Why Does My Python Recursive Function Sometimes Return None?

Pourquoi la fonction récursive Python ne renvoie parfois aucun

Contrairement aux fonctions itératives, les fonctions récursives s'appuient sur leurs appels récursifs pour renvoyer des 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 le résultat souhaité.

Considérez le code Python suivant :

<code class="python">def gcdIter(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        print(a)
        return a
    gcdIter(a, b % a)</code>
Copier après la connexion

Cette fonction vise à trouver le plus grand diviseur commun de deux nombres utilisant la récursion. Cependant, il peut renvoyer None pour certaines entrées car la valeur de retour de l'appel récursif n'est pas gérée correctement.

<code class="python">print(gcdIter(306, 136)) # Returns None
print(gcdIter(42, 84)) # Returns 42</code>
Copier après la connexion

Pour résoudre ce problème, le code doit renvoyer la valeur de retour de l'appel récursif à la fonction principale. En modifiant la ligne gcdIter(a, b % a) pour renvoyer gcdIter(a, b % a), la fonction renverra correctement le plus grand diviseur commun.

<code class="python">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)</code>
Copier après la connexion

Alternativement, la fonction peut être réécrite plus de manière compacte comme :

<code class="python">def gcd_iter(a, b):
    return gcd_iter(b, a % b) if b else abs(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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!