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