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值相加并会抛出异常

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值