高阶函数
一个函数作为另一个函数的参数传入;函数名可以作为返回值;这样的函数即为高阶函数。
例如:求两个数的平方和
def f(m):
return m*m
def f1(a,b,function):
rets=function(a)+function(b)
return rets
print(f1(1,3,f))
# 函数f1被称为高阶函数。
递归函数
函数调用自己,这种函数成为递归函数。但凡递归函数做的事,循环函数都可以完成。
必须有一个明确的结束条件;
每次进入更深一层递归时,需要递归的的次数都应该相应减少;
递归效率不高,递归层次过多会导致栈溢出;
例1:如下计算阶乘的函数
递归函数:
def func(n):
if n==1:
return 1
return n*func(n-1)
func(5)
for循环:
def func(x):
x=x+1
sum=1
for i in range(x)[1:]:
sum*=i
return sum
func(5)
例2:利用递归函数求斐波那契数列的第n位数字:
def fibo(n):
if 1 < n <= 3:
return 1
elif n==1:
return 0
elif n<=0:
return "please input an int greater than 0."
return fibo(n-1)+fibo(n-2)
print(fibo(8)) # 返回13 效率非常低,当n大于30时,明显都能看出来
# 下面是利用for循环实现斐波那契数列求值:
def fib(n):
a = 0
b = 1
if n >= 3:
for i in range(n+1)[3:]:
a,b=b,a+b
result = b
return result
elif n == 1:
return a
elif n ==0:
return b
else:
return "please input an int greater than 0."
print(fibo(8)) # 返回13 效率高
内置函数