python函数递归与实现二分法

递归:什么是递归?

        1)递归是一种循环具有递推,基准情况,回溯的函数,只要函数在运行中有直接或者间接调用自身的,都称为递归函数

        2)递归在Python中具有递归层数限制,因为无限制的递归会大量的消耗内存。可以导入sys模块来修改最大递归层数

        3)基准情况是递归的出口,递推过程是一步步靠近向基准情况,而回溯是由基准情况一步步靠近函数的最终结果,递归解决问题的思想在于将一个大问题分隔成一个个相似小问题来解决,与while  for循环不同的是递归在某些方面比普通的循环更加灵活,没有一个明确的条件  只用终止循环的条件来控制循环的进度结果

二分查找法:基于递归形式的一种运用

        1)二分查找法基于已经排好序的数据,每次只寻找数据中中间的元素,假如该元素比要查找的元素要小则在前半部分的数据中再次寻找中间的元素,反之假如该元素比要寻找的元素要大则在数据的后半部分再次重复该过程

        2)二分查找只能基于已经排好顺序的数据

以下代码是python用递归的形式来实现二分查找

def find(el,mylists):
    min = len(mylists)//2
    print(min)
    if len(mylists) == 0:
        return None
    elif mylists[min] == el:
        return min
    elif mylists[min] < el:
        return min+find(el,mylists[min+1:])+1
    elif mylists[min] > el:
        return find(el,mylists[:min])

print('elments index in ',find(56,mylist)
以上代码有缺陷当找不到元素返回的None会与上一次的min值相加并会抛出异常

        

阅读更多
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页