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!