python函数(二)匿名函数和递归函数

本文深入探讨了Python中的匿名函数(lambda)和递归函数。介绍了匿名函数的特点,如无需命名、只能包含一个表达式,并通过多个案例展示了其应用场景,如求最大值、保留小数位数等。同时,详细解析了递归函数的概念,强调了其自我调用和出口条件的重要性,通过阶乘计算、斐波拉契数列和雌雄兔繁殖问题的实例阐述了递归的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、匿名函数

1.匿名函数的特点

不需要创建函数名,用lambda表示
只能有一个表达式

不用写return,该表达式的结果就是返回值

2.案例

def add(a,b):
    return a+b
print(add(1,3))
# 4
add1  = lambda x,y :x+y
print(add2(1,3))
# 4
add2  = lambda x,y=1 :x+y
print(add2(1))
# 2
add3  = lambda x,*y :x+sum(y)
print(add3(1,3,4))
# 8
add4  = lambda x,**y :x+sum(y.values())
print(add4(2,a=1,b=2,c=3))
# 8

2.1 使用匿名函数返回两个数之间的最大值

maxnum = lambda x,y:x if x>y else y
maxnum1 = lambda x,y:max(x,y)
maxnum2 = lambda x,y:x>y and x or y
print(maxnum(1,3))
print(maxnum1(1,3))
print(maxnum2(1,3))

2.2 使用匿名函数,将传入浮点数保留两位小数

func01 = lambda x:float('%.2f'%x)
func02 = lambda x:round(x,2)
print(func01(3.333333))
print(func02(3.333333))

二、递归函数

1.递归函数的特点

自己调用自己
定义出口条件,什么时候结束递归
通常是把一个大问题通过寻找规律可以缩小规模的时候使用的

尽量避免使用递归,除非没有更好的算法,或者是在某种特定的情况下使用递归
每次递归都会保存结果在内存中,非常占用内存,效率低下

2.案例

2.1 求取n的阶乘

# n!=1*2*3*...*n
# 规律: f(n) = n * f(n-1)

def func01(n):
    if n ==1:     # 定义出口条件
        return 1
    return n * func01(n-1)  # 规律

2.2 使用递归实现斐波拉契数列

# 1,1,2,3,5,8,13
# 第一第二位都是1,后面的数都是前两位数的和
# f(n) = f(n-1) + f(n-2)

def func01(n):
    if n==1 or n == 2:   #定义出口条件
        return 1
    else:
        return func01(n-1) + func01(n-2)  #规律
num = int(input("请输入队列数:"))
lst = []
for i in range(1,num+1):
    lst.append(func01(i))
print(lst)

2.3 雌雄兔繁殖

#第一、二个月:1对
#第三、四个月:2对
#第五、六个月:4对
#第七、八个月:8对
#f(n) = f(n-2)*2

def func02(n):
    if n==1 or n==2:  # 定义出口条件
        return 1
    return func02(n-2)*2  #规律
print(func02(6))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值