关于“递归”与“非递归”的转换
来源:互联网 发布:小米随身wifi mac 编辑:程序博客网 时间:2024/05/16 05:25
尾递归(Tail-Recusive function)可以转换为循环
非尾部递归可以用栈来转换
什么是尾部递归?-参阅 精通递归程序设计。
如何判断您的 JIT 能否转换尾递归:编译并运行如下程序(参照提高Java代码的性能),如果您的 JIT 编译器把尾递归调用转换成迭代,这个程序将无限期地运行下去。它所需的内存很小,而且不会随时间增加。如果 JIT 不做这种转换,程序将会很快耗尽堆栈空间并报告一个堆栈溢出错误。
如何判断您的 JIT 能否转换尾递归:编译并运行如下程序(参照提高Java代码的性能),如果您的 JIT 编译器把尾递归调用转换成迭代,这个程序将无限期地运行下去。它所需的内存很小,而且不会随时间增加。如果 JIT 不做这种转换,程序将会很快耗尽堆栈空间并报告一个堆栈溢出错误。
递归和非递归,其实都是一样的。非递归需要人为构建维护堆栈;递归只是系统在帮你维护堆栈而已。(摘自如何用栈实现递归与非递归的转换)
- 关于“递归”与“非递归”的转换
- 关于“递归”与“非递归”的转换
- 递归与非递归的转换
- 递归与非递归转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 递归与非递归及其相互转换
- 递归与非递归相互转换
- 递归与非递归及其相互转换
- 关于回溯算法的递归与非递归解法
- SQLserver2000 数据备份等
- VRML ASP教程
- 求2数的最大值,(不用比较运算符)
- 使用eclipse创建Tomcat工程
- Tomcat5.0.28 Web服务器上部署Servlet程序
- 关于“递归”与“非递归”的转换
- 用C#编写ActiveX控件
- css+div布局总结——基础篇
- 网页制作中的一些常用代码(转)
- OLE DB
- TWinSocketStream Write接口问题
- Jbuilder快捷键大全
- 音频技术学习笔记
- C#和C++的主要区别