Maison > développement back-end > Tutoriel Python > Pourquoi mon code récursif ne renvoie-t-il aucun résultat en permanence ?

Pourquoi mon code récursif ne renvoie-t-il aucun résultat en permanence ?

Barbara Streisand
Libérer: 2024-10-27 01:11:30
original
742 Les gens l'ont consulté

Why Does My Recursive Code Continuously Return None?

Le code récursif ne renvoie continuellement aucun

Étant donné l'extrait de code récursif suivant :

<code class="python">def isIn(char, aStr):
    ms = len(aStr)/2
    if aStr[ms] == char:
        print('i am here now')
        return True
    elif char > aStr[ms] and not ms == len(aStr)-1:
        aStr = aStr[ms+1:]
    elif char < aStr[ms] and not ms == 0:
        aStr = aStr[0:ms]
    else:
        return False
    isIn(char, aStr)

print(isIn('a', 'ab'))</code>
Copier après la connexion

On peut rencontrer un comportement inattendu où le code renvoie None au lieu de la valeur True attendue. Ce problème se produit car l'appel récursif final dans le bloc else ne dispose pas d'une instruction return explicite.

Le code corrigé doit inclure l'ajout suivant :

<code class="python">else:
    return isIn(char, aStr)</code>
Copier après la connexion

Dans ce scénario, lorsque la fonction récursive , il attribue la valeur de retour de l'appel récursif à la fonction elle-même. Si l'appel récursif ne parvient pas à trouver le caractère, il renvoie False, que la fonction renvoie ensuite comme sa propre valeur.

Sans l'instruction return explicite lors de l'appel récursif final, la fonction atteindrait la fin sans un spécifié valeur de retour. En conséquence, il renverrait implicitement Aucun, c'est pourquoi le code d'origine renvoyait constamment Aucun.

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