• 当前位置:首页 > Python > 解决递归函数的栈溢出
  • 博客搬到SAE了,这个还是比较省心的。不用老是为备份担心。
  • 开启友情赞助空间
  • 无聊了:[ 探索发现 ] 一下,精彩文章等着你哦!

解决递归函数的栈溢出

2015-01-04 15:57

4,779阅览 0条评 Python arno

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

 

解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况

 

 

但是Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

本文声明

除非注明,否则文章均为 " 枫林博客 " 原创,转载时请注明文章出处。


作者信息:arno \ 2015-01-04 15:57 \ 枫林博客 \

分类标签:Python

本文地址:http://www.blogfeng.com/%e8%a7%a3%e5%86%b3%e9%80%92%e5%bd%92%e5%87%bd%e6%95%b0%e7%9a%84%e6%a0%88%e6%ba%a2%e5%87%ba.html

还没有人评论哦,赶紧留下爪印吧!

发表评论

* *



​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​