day3-递归、函数式编程、高阶函数
一、递归
递归函数:在内部调用自身的函数
1 def calc(n): 2 print(n) 3 if int(n/2) ==0: 4 return n 5 return calc(int(n/2)) 6 7 calc(10) 8 9 >>> 10 10 11 5 12 2 13 1
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)
这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。
由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出,递归最大为999层)
二、 函数式编程
函数:是定义一段代码的执行过程
函数式编程:输入是确定的,输出也是确定的
函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
三、高阶函数高阶函数:把函数本身当做一个参数,传到另一个函数中,然后在这个函数中做处理
1 def add(a,b,f): 2 return f(a) + f(b) 3 4 res = add(3, -6, abs) 5 print res 6 7 >>> 8 9

浙公网安备 33010602011771号