【23.函数-高阶函数】
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称为高阶函数
如果一个函数可以接收另一个函数,这个函数就称为高阶函数
def func(x,y): return x+y def calc(x): return x f = calc(func) print(f(5,9))
输出结果
总结
1.接收一个或多个函数作为输入
2.return返回另外一个函数
【24.递归介绍】
什么是递归?
递归就是在函数的过程中调用自己
def recursion(n): recursion(n+1) print("这就是递归") recursion(1)
输出结果
python在调用的过程中超过了最大递归层的限制
print(sys.getrecursionlimit())
sys.getrecursionlimit(1500)#修改最大递归层数的限制
总结
递归调用就是不断的在函数自己里再执行,一直不结束,直到把内存撑爆了,所以需要有限制机制,于是python内部就加上了函数的限制
【25.函数-递归与栈的关系】
递归的本质,函数的调用时通过栈来执行的,栈就像是一个容器,内部是有数据大小限制的
每执行一次函数就会往栈里放内容,不断的放在栈里就容易溢出,只有函数结束以后,栈才会处理垃圾数据
【26.递归的作用】
可以用来解决复杂的数学问题,比如斐波那契数列等
使用递归的场景
def calc(n): v = int(n /2) print(v) if int(v) == 0: return 'Done' calc(v) calc(10)
输出结果
【27.递归的特性总结】
递归是层级进入执行,函数执行完结束也是层级结束的
1.必须有一个明确的结束条件,要不就会变成死循环了,最终撑爆系统
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3.递归执行效率不高,递归层次过多会导致栈溢出