Python学习笔记(八)——递归函数和匿名函数
递归函数:
概念
递归函数即自调用函数,在函数体内部直接或者间接地自己调用自己。即函数地嵌套调用是函数本身。
阶乘函数的构造:
def factorial2(n):
if n==1:
return 1
return n*factorial(n-1)
print(factorial2(4))
原理
递归函数包含两个部分:终止条件和递归步骤。
终止条件:表示递归的结束条件,用于返回函数值,不在递归调用
递归步骤:递归步骤把第n步的函数值的函数与第n-1步参数值的函数关联起来
设计递归函数时注意的问题
1、必须设置终止条件
2、必须保证收敛(递归调用所解决的子问题的规模必须小于原始递归的规模,否则也会导致递归函数的无限次调用)
3、必须保证内存和运算消耗控制在一定范围
匿名函数
概念
匿名函数是没有名称的函数,即不是用过def语句定义的函数,而使用lambda关键字。
格式
lambda arg1,arg2,...,argn:expression
只有一个表达式而不能使用if,for;计算结果看做是函数的返回值。
实例
在Python中函数也是对象,故函数对象可以赋值给变量。
add=lambda a,b:a+b
def add(a,b):
return a+b
print(add(34,65))
前面的第一行和后面的两行时完全等价的。
再举一个例子,构造圆面积的小程序
import math
squre=lambda r:math.pi*r**2
print(squre(3))
lambda函数有点抽象,实际上比之前使用的def构造函数要省时省力很多,多加练习,熟能生巧。
匿名函数:以参数传递作为实例
stus=[234,3,43,234,54,56,6,54,234,67]
ans=lambda x:stus[x]
print(ans(5))
传送门:Python全套学习笔记