所以我有一个奇怪的问题,假设很简单: 返回与打印
我正在练习二进制搜索的编码
def binary_search(data, n):
if len(data) == 0:
return False
x = (len(data))//2
if data[x] == n:
#The following line seems to be the problem
return x
elif n < data[x]:
binary_search(data[:x], n)
else:
binary_search(data[x+1:], n)]
z = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(binary_search(z, 9))
返回None
如果我从返回x切换 - &gt;打印(x)的
# CODE CODE CODE
print(x)
#CODE CODE CODE
print(binary_search(z, 9))
返回
2
None
我知道二进制搜索本身有效(2是正确的答案)而且“无”#39;无来自两个打印语句,但只有一个打印语句
# CODE CODE CODE
return x
#CODE CODE CODE
print(binary_search(z, 9))
它只打印无
知道为什么会这样吗?除非我问
,否则我不希望该方法自动打印另一个奇怪的事情是
#ORIG CODE
return False
#ORIG CODE
y = []
print(binary_search(y, 9))
返回
False
所以在那种情况下&#39;返回&#39;表现得像我期待的那样
我甚至尝试切换返回x以返回True,它仍然返回None