码迷,mamicode.com
首页 > 编程语言 > 详细

第十一天python3 递归函数

时间:2020-06-30 14:29:37      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:exce   死循环   recursion   示例   直接   递归函数   简单   img   info   

递归Recursion

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

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

  递归一定要有边界条件;

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

  当边界条件满足的时候,递归返回;  

斐波那契数列示例:

  技术图片

 

递归要求:

  递归一定要有退出条件,递归调用一定要执行到这个退出条件;没有退出条件的递归调用,就是无限调用;

  递归调用的深度不宜过深,python对递归调用的深度做了限制,以保护解释器;超过递归深度,抛出RecursionError:maxinum recursion depth exceeded超出最大深度;

  sys.getrecursionlimit()  查看最大深度;

递归的性能

  循环稍微复杂,但是只要不是死循环,可以多次迭代直至算出结果;

  fib函数代码简单易懂,但是只能获取到最外层的函数调用,内部递归结果都是中间结果,而且给定一个n都要进行2n次的递归,深度越深,效率越低;为了获取斐波那契数列需要在外面再套一个n次的循环,效率就更低了,

  递归还有深度限制,如果递归复杂,函数反复压栈,栈内存很快就溢出了;

  技术图片

第十一天python3 递归函数

标签:exce   死循环   recursion   示例   直接   递归函数   简单   img   info   

原文地址:https://www.cnblogs.com/zhangzhide/p/13213407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!