python - 递归二进制搜索 Python 3 打印解决方案但不返回它
问题描述
def binarySearch( a, l, r, num ):
m = (l+r) // 2
if l < r:
if num <= a[m]:
binarySearch(a, l, m, num)
else:
binarySearch(a, m+1, r, num)
else:
print( m )
如果不是 print(m) 我写 return(m) 然后尝试打印它返回 None 的函数,我不明白为什么。有人可以解释吗?谢谢
解决方案
def binarySearch( a, l, r, num ):
m = (l+r) // 2
if l < r:
if num == a[m]:
return m
elif num < a[m]:
return binarySearch(a, l, m, num)
else:
return binarySearch(a, m+1, r, num)
else:
return -1
# If return statement with the thing that need to be return is not mentioned explicitly by default we get None
'''
--tested using
for i in range(0,8):
print('result for item', i ,binarySearch( [0,1,2,5,7], 0, 5,i ))
'''
推荐阅读
- javascript - 在 vanilla JavaScript 的数组中创建具有 xy 坐标的对象矩阵
- big-o - 证明或证伪 n 〖log〗_10 n ∈θ(n 〖log〗_2 n)
- laravel - Laravel foreach 只获得第一个值
- c - C4013:未定义;假设 extern 返回 int
- wpf - WPF:Minecraft 游戏坐标到 WPF 画布坐标
- c# - 为什么 Tryparse 不工作并立即抛出捕获?
- ruby-on-rails - 导轨。Seahorse::Client::NetworkingError Amazon S3
- json - Golang Json Unmashalling 到包含 interface{} 的结构
- php - Laravel 不播种扩展模型
- python - 在与最长列表长度相同的列表列表中创建一个新列表