python - Python中具有嵌套函数的二分搜索的递归方式
问题描述
我实现了一种递归的二进制搜索方式,但我遇到了一个问题。这是我的代码:
def foo(x, ls):
left, right = 0, len(ls)-1
def search(l, r):
if l>r:
return False
mid = (l+r)//2
if x < ls[mid]:
return search(l,mid-1)
elif x > ls[mid]:
return search(mid+1,r)
else:
return True
return search(left,right)
此功能工作正常。但是,如果我return
从 if 语句中删除,并在没有 a 的情况下调用搜索函数return
,则会引发错误的答案。谁能解释一下?确切的区别是什么?
解决方案
如果您不在递归函数中返回值,则此函数的尾部仅返回 None,如果您尝试将其转换为布尔值,则会将其评估为 False
推荐阅读
- rest-assured - 如何使用 Rest Assured 从列表中获取值?
- vb.net - 使用循环允许我在控制台应用程序中输入多个数字,然后进行计算
- centos - 如何在 Centos 8 上将 Clamd 作为服务运行
- shopify - 将 js 变量与 Shopify 液体标签一起使用
- python - argParse 的新手,不确定我的错误在哪里
- java - 如何使用哈希图计算成对数字的绝对差?
- html - 如何使用 HTML/CSS 和 Bootstrap 4 使视频适合网页背景?
- git - 删除 repo 1 的子文件夹以创建新的 repo 2 (bitbucket repos)
- java - 如何在 Spark Java 中创建复杂的 StructType Schema
- python - 我可以过滤 forms.ManyToManyField 中的对象以等于在另一个字段中选择的值吗?