【发布时间】:2015-10-22 18:23:39
【问题描述】:
为了实现我自己的二分查找,我写了下面的函数
def bisect(input, target):
mid = len(input)/ 2
if len(input) == 1:
if input[0] == target:
return 1
else:
return None
elif input[mid] > target:
bisect(input[:mid], target)
elif input[mid] <= target:
bisect(input[mid:], target)
我知道我的实现已关闭,但我更想了解这里的递归堆栈。
当我调用bisect(['d','e'], 'd') 时,我的函数应该返回
bisect(['d'], 'd')
但它返回 None。此外,当我直接调用bisect(['d'], 'd')时,我得到了正确的值0。这怎么可能?
【问题讨论】: