匿名函数和递归函数
匿名函数:Python使用lambda来创建匿名函数。与用def关键字定义函数相比,没有函数名称。
1、匿名函数定义和特点
lambda[para1,para2,…]:expression
特点:
1)lambda后没有跟函数名
2)[para1,para2,…]参数是可选的,任何类型的,参数往往在后面的expression体现。
3)expression表达式实现匿名函数功能的过程,并返回操作结果,具有通常函数return的功能。
4)整个匿名函数在一行内实现所有定义。
如下:
a=lambda x,y:x*y #定义匿名函数并赋值给a
print(a(2,3))
递归函数
递归(递归算法):在计算机科学中是指通过重复将问题分解为同类的子问题而解决问题的算法。
递归函数就是指利用函数实现递归算法的过程。递归函数通过自己调用自己来实现递归算法。
递归函数例子:
def r_sum(num):
if num==1:
return num
return r_sum(num-1)+num #自己调用自己,两个相邻数相加
print(r_sum(4)) #调用递归函数并打印结果
递归函数实现二分法查找
def r_dichotomy(nums,find,left,right):
middle=(left+right)//2 #求商的整数,取中间值的下标
if nums[middle]==find:
return middle
if right==left+1: #若指定范围没有找到
if nums[middle]!=find:
return -1 #-1代表没找到
if nums[middle]>find:
return r_dichotomy(nums,find,left,middle)
elif nums[middle]<find:
return r_dichotomy(nums,find,middle,right)
nums_List=[1,2,3,4,5,6,7,8,10,12,16,30]
print(r_dichotomy(nums_List,4,0,len(nums_List))) #z查找列表中元素值为4的元素下标
# 3