zoukankan      html  css  js  c++  java
  • 函数递归

    函数的执行流程

    调用函数,函数压栈,参数压栈,创建栈帧(frames),执行,弹出

    递归(Recursion)

    函数直接或间接调用自身就是 递归

    递归需要有边界条件,递归前进段,递归返回段

    递归一定要有一个可以执行到的边界条件

    当边界条件不满足的时候,递归前进

    当边界标间满足的时候,递归返回

    要求

    递归一定要有退出条件

    递归调用深度不宜过深 ,

    ​ Python对递归调用深度做了限制,以保护解释器

    ​ 超过递归深度限制,报RecursionError:maxinum recursion depth exceeded 超出最大深度

    显示默认最大深度

    import sys
    print(sys.getrecursionlimit())
    

    更改默认最大深度

    import sys
    sys.setrecursionlimit(2000)
    
    间接递归

    fn1 调 fn2; fn2 调 fn1

    递归总结

    递归相对运行效率低,每次调用函数都要开辟栈帧

    递归有深度限制,递归层次太深,反复压栈,很快就会栈内存溢出

    有限次数递归,可以使用递归调用,

    绝大多数递归,都可以转换成循环

    即使递归代码很简洁,能不用则不用

  • 相关阅读:
    团队作业六
    团队作业五
    团队作业(四)
    团队作业(三)
    团队作业二
    宇宙圣斗士队介绍
    团队作业之七
    团队作业之六
    团队作业五
    奥特曼小分队之四(Work Breakdown Structure)
  • 原文地址:https://www.cnblogs.com/agsol/p/11578616.html
Copyright © 2011-2022 走看看