关于“递归”与“非递归”的转换

尾递归(Tail-Recusive function)可以转换为循环

什么是尾部递归?-参阅 精通递归程序设计

如何判断您的 JIT 能否转换尾递归:编译并运行如下程序 (参照提高Java代码的性能 ,如果您的 JIT 编译器把尾 递归 调用 转换 成迭代,这个程序将无限期地运行下去。它所需的内存很小,而且不会随时间增加。 如果  JIT 不做这种 转换 ,程序将会很快耗尽堆栈空间并报告一个堆栈溢出错误。 


非尾部递归可以用 来转换  

递归和非递归,其实都是一样的。非递归需要人为构建维护堆栈;递归只是系统在帮你维护堆栈而已。(摘自 如何用栈实现递归与非递归的转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值