路飞学城Python-Day9

【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)
需求:使用10整除2,直到得到0为止

输出结果

【27.递归的特性总结】
递归是层级进入执行,函数执行完结束也是层级结束的


1.必须有一个明确的结束条件,要不就会变成死循环了,最终撑爆系统
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3.递归执行效率不高,递归层次过多会导致栈溢出

猜你喜欢

转载自www.cnblogs.com/pandaboy1123/p/9276237.html