Maison >développement back-end >Tutoriel Python >Pourquoi ma fonction récursive ne renvoie-t-elle parfois rien ?

Pourquoi ma fonction récursive ne renvoie-t-elle parfois rien ?

DDD
DDDoriginal
2024-12-29 04:53:10853parcourir

Why Does My Recursive Function Sometimes Return None?

Pourquoi la fonction récursive ne renvoie-t-elle aucun ?

Dans le code fourni, la fonction get_input() est confrontée à un problème où elle renvoie occasionnellement Aucun. Cela se produit lorsque l'utilisateur saisit initialement une valeur non valide, puis saisit « a » ou « b ». Pour comprendre pourquoi, examinons la fonction plus en détail.

La fonction get_input() invite l'utilisateur à saisir « a » ou « b ». Si l'entrée ne correspond pas, il imprime un message et s'appelle récursivement pour obtenir à nouveau l'entrée. Ce flux récursif garantit que l'utilisateur fournit une entrée valide.

Le problème survient dans l'instruction if à l'intérieur de la fonction. Lorsque l'utilisateur entre initialement une valeur non valide et que la fonction s'appelle de manière récursive, l'appel récursif ne renvoie rien. Au lieu de cela, il tombe à la fin de la fonction.

En Python, tomber à la fin d'une fonction équivaut à renvoyer None. Cela signifie que la fonction get_input() renvoie None lorsque l'utilisateur saisit pour la première fois une valeur non valide.

Pour résoudre ce problème, vous devez vous assurer que l'appel récursif renvoie une valeur. Dans votre instruction if, remplacez la ligne suivante :

get_input()

Par ce qui suit :

return get_input()

Cette modification garantit que l'appel récursif renvoie le résultat de l'appel suivant, qui sera la saisie appropriée ("a" ou "b") ou Aucune si l'utilisateur continue de saisir des valeurs non valides.

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