Python - 递归

递归允许函数调用自身。 固定的代码步骤会一次又一次地执行新值。 我们还必须设置标准来决定递归调用何时结束。 在下面的例子中,我们看到了二分搜索的递归方法。 我们采用一个排序列表并将其索引范围作为递归函数的输入。


使用递归的二分搜索

我们使用 python 实现二分查找算法,如下所示。 我们使用一个有序的项目列表并设计一个递归函数来接收列表以及开始和结束索引作为输入。 然后,二分搜索函数调用自身直到找到搜索到的项目或断定它不在列表中。

示例

def bsearch(list, idx0, idxn, val):
   if (idxn < idx0):
      return None
   else:
      midval = idx0 + ((idxn - idx0) // 2)
# Compare the search item with middle most value
   if list[midval] > val:
      return bsearch(list, idx0, midval-1,val)
   else if list[midval] < val:
      return bsearch(list, midval+1, idxn, val)
   else:
      return midval
list = [8,11,24,56,88,131]
print(bsearch(list, 0, 5, 24))
print(bsearch(list, 0, 5, 51))

输出

当上面的代码执行时,会产生如下结果 −

2
None