Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-10-27 01:11:30631parcourir

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>

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>

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!

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