函数递归

其实就是自己调用自己叫函数递归:
  默认递归是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))

原文地址:https://www.cnblogs.com/zhengyiqun1992/p/10033201.html