17.匿名函数,递归(二分查找算法)

匿名函数

匿名函数:为了解决那些功能简单的需求而设计的一句话函数

匿名函数形式:函数名 = lambda 关键字 :函数体(也就是匿名函数的返回值)

lambda n:n*n   #一个参数
lambda n,m:n*m  #多个参数

递归函数

什么是递归:在一个函数中调用自身函数

python从内存角度发出限制,默认最大的递归深度是997

可以使用代码自己设置递归的最大深度

import sys
sys.setrecursionlimit(100)   设置递归的最大深度为100

递归的应用场景:如果需要多次递归才能实现的功能,就不适合用递归来解决

递归的缺点:占内存

递归的优点:会让代码编写变简单

例题:用递归函数来实现二分查找算法

def find_num(l,num,start=0,end=None):
    end=len(l) if end is None else end
    mid = (end-start)//2+start
    if start<=end:
        if(l[mid]>num):

            return find_num(l,num,start=start,end=mid-1)
        elif(l[mid]<num):
            return find_num(l,num,start=mid+1,end=end)
        else:
            return mid
    else:
        return '数据找不到'
l=[1,3,5,6,7,8,9]
print(find_num(l,8))

执行结果:5

 

posted @ 2020-10-17 22:22  maday  阅读(74)  评论(0)    收藏  举报