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
Mary-Kate Olsenoriginal
2024-11-03 10:59:29942parcourir

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)

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)

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)

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!

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