递归函数
递归函数在定义时需满足的两个基本条件:
1、有递归公式
2、有边界条件
递归函数的执行:
1、递推(递归调用):递归的执行基于上一次的运算结果,将问题规模逐渐缩小,通过不断调用自身来求解子问题
2、回溯:当递归达到边界条件时,递归开始,逐级返回函数调用过程中得到的结果,将得到的部分结果组合成最终的解
# 功能:n!
# 边界条件:n = 1,结果为1
# 公式:n x (n-1)!
def func(num):
"""n!"""
# 边界条件
if num==1 :
return 1
# 公式
else:
return num * func(num-1)
num =int(input("输入整数:"))
result = func(num)
print(f"{num}= %d" % result)
# 斐波那契数列
# 边界条件:fib(0) = 0, fib(1) = 1
# 公式:fib(n) = fib(n-1) + fib(n-2)
def fib(n):
if n==0 :
return 0
elif n==1:
return 1
else:
return fib(n-1)+fib(n-2)
n =int(input("输入整数:"))
result = fib(n)
print(f"fib({n})= %d" % result)
匿名函数
匿名函数:是一类不需要命名的函数,它与普通函数一样可以在程序的任何位置使用。
执行 操作:
1、普通函数在定义时有函数名,而匿名函数没有函数名。
2、普通函数的函数体中包含多条语句,而匿名函数的函数体只能是一个表达式。
3、普通函数可以实现比较复杂的功能,而匿名函数可实现的功能比较简单。
# 实现简单功能, lambda <形式参数列表>:<表达式>
temp = lambda x : pow(x,2) #定义
print(temp(10))