首页  >  文章  >  后端开发  >  为什么我的递归代码连续不返回任何内容?

为什么我的递归代码连续不返回任何内容?

Barbara Streisand
Barbara Streisand原创
2024-10-27 01:11:30631浏览

Why Does My Recursive Code Continuously Return None?

递归代码连续返回 None

给出以下递归代码片段:

<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>

人们可能会遇到意外行为其中代码返回 None 而不是预期的 True 值。出现此问题的原因是 else 块中的最终递归调用缺少显式 return 语句。

更正后的代码应添加以下内容:

<code class="python">else:
    return isIn(char, aStr)</code>

在这种情况下,当函数递归时,它将递归调用的返回值分配给函数本身。如果递归调用未能找到该字符,则返回 False,然后函数将其作为自己的值返回。

如果最终递归调用上没有显式 return 语句,则函数将在没有指定的情况下到达末尾返回值。结果,它会隐式返回 None,这就是为什么原始代码一直返回 None。

以上是为什么我的递归代码连续不返回任何内容?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn