lambda关键字,匿名函数,具有简洁的表达方式,适合做一次性运算,系统会自动回收。
>>> pao = lambda x : x * x + 5
9
>>> gg = lambda x,y : x*y #支持多个参数
>>> gg(3,8)
24
filter过滤器函数,输出真的值,第一个参数可以是函数也可以是None
>>> list(filter(lambda x: x % 2 + 1,range(20)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> list(filter(lambda x: (x +1) % 2 ,range(20)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
map函数,相当于一个映射函数,把输入值依次放进map函数的作用域去执行。
递归函数是人妻,调用自身,必须要回来。
def factorrial(n):
result = n
for x in range(1,n):
result *= x
return result
def fac(n):
if n == 1:
return 1
else:
return n * fac(n-1)
number = int(input("请输入一个正整数:\n"))
re = factorrial(number)
print("经典函数%d 的阶乘是 %d\n" % (number,re))
re = fac(number)
print("递归函数%d 的阶乘是 %d" % (number,re))
输出结果:
请输入一个正整数:
5经典函数5 的阶乘是 120
递归函数5 的阶乘是 120
斐波那契数列的递归实现:
def fibonaqi(n):
if n == 1 or n==2:
return 1
else :
return fibonaqi(n-1) + fibonaqi(n-2)
a = int(input("请输入一个正整数:\n"))
re = fibonaqi(a)
print("%d 的fibonaqi数列用递归算法实现的值为:%d\n" % (a,re))
list1=[]
#如果在fibonaqi函数中没有定义0的输入
#千万要注意他的输入中不能有0
for i in range(1,a+1):
list1.append(fibonaqi(i))
print("fibonaqi数列为:",list1)
输出:
请输入一个正整数:
20
20 的fibonaqi数列用递归算法实现的值为:6765
fibonaqi数列为: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
汉诺塔游戏的实现,输入64的话能跑半天!!!输入128是很刺激的
def hanoi(n,x,y,z):
if n == 1:
print(x,"-->",z)
else:
hanoi(n-1,x,z,y)
print(x,"-->",z)
hanoi(n-1,y,x,z)
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,'A','B','C')