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

    其实就是自己调用自己叫函数递归:
      默认递归是1000次,因为在递归的时候,需要暂用内存空间,执行一次
      的时候上面一层的函数依旧在运行,所以必须要有限制。本质上说函数运行
      会占用栈空间,当运行一次就在栈空间加一层,当递归次数过多,栈就会溢出

    递归总结:  

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

    尾递归优化:

      

    def cal(num):
        if num == 1:
            return num
        return num * cal(num-1)
    print(cal(4))

    其实就是通过return 的方式来递归函数, 当return调用函数时,当前函数不需要等待下一层函数执行,就可以释放空间。但是,python未对此方法进行优化

    def cal(num):    if num == 1:        return num    return num * cal(num-1)print(cal(4))

  • 相关阅读:
    MongoDB慢查询性能分析
    redis的LRU算法(二)
    Skynet服务热点火焰图分析
    内存爆灯
    时区问题
    与机器共生
    bug狩猎
    Lesson Learned
    下划线引起的血案
    Intel的CPU漏洞:Spectre
  • 原文地址:https://www.cnblogs.com/zhengyiqun1992/p/10033201.html
Copyright © 2011-2022 走看看