高阶函数
一个函数作为另一个函数的参数传入;函数名可以作为返回值;这样的函数即为高阶函数。
例如:求两个数的平方和
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 效率高
内置函数