Maison > développement back-end > Tutoriel Python > Pourquoi « gcdIter » renvoie-t-il « Aucun » lors du calcul de GCD ?

Pourquoi « gcdIter » renvoie-t-il « Aucun » lors du calcul de GCD ?

Mary-Kate Olsen
Libérer: 2024-11-03 10:59:29
original
920 Les gens l'ont consulté

Why Does `gcdIter` Return `None` When Calculating GCD?

Comprendre le comportement déroutant des fonctions récursives Python : pourquoi gcdIter ne renvoie-t-il aucun ?

Lorsqu'il s'agit de fonctions récursives, il est crucial de comprendre leur mécanisme de retour. Considérons la fonction gcdIter suivante, destinée à calculer le plus grand diviseur commun (PGCD) de deux nombres. Cependant, pour certaines valeurs d'entrée (par exemple, 306 et 136), elle renvoie de manière inattendue Aucun.

Le problème réside dans la partie récursive du code :

gcdIter (a,b%a)
Copier après la connexion

Alors que la fonction crée un appel récursif à lui-même avec les paramètres pertinents, il ne parvient pas à gérer la valeur de retour de cet appel. Pour conserver le résultat GCD, la valeur de retour doit être transmise en remontant la chaîne :

return gcdIter (a,b%a)
Copier après la connexion

De plus, il est prudent d'utiliser des affectations de variables multi-cibles pour rationaliser le code :

def gcdIter(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        return a
    return gcdIter(a, b % a)
Copier après la connexion

En résolvant ces problèmes, gcdIter renverra systématiquement le GCD pour toutes les valeurs d'entrée données, comme prévu.

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