首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教怎么用11步解开递归

2012-03-14 
请问如何用11步解开递归?求一个解开递归的通用算法。我记得一本书上介绍的算法是用11步将递归解开的,但这本

请问如何用11步解开递归?
求一个解开递归的通用算法。
我记得一本书上介绍的算法是用11步将递归解开的,但这本书不在我身边。不知道有谁记得这个算法?

[解决办法]
估计楼主的意思是,不用函数递归调用的方式实现递归
比如求n的阶乘
int f(int n)
{
if (n == 1) return 1;
else return n*f(n-1);
}
但也可以不用递归函数实现
prod=1;
for (int i=1; i <=n; i++)
prod *=i;


[解决办法]
是一本算法书上介绍的,好像是华中科技大学出的那本,不过我也只有这点印象了
[解决办法]
所有的递归,原理上也都可以用迭代实现,不过有的很简单,比如n阶乘,有的就很难。不过貌似没有听说过什么11步把对规转化为迭代的,谁写的书啊?
[解决办法]
如何用栈实现递归与非递归的转换

http://www.cnblogs.com/zhangjjwm/archive/2006/06/27/436985.aspx

[解决办法]
递归化非递归主要就看递归的类型, 尾递归的最简单,就像阶乘,fib数列啥的, 基本上优化较好的编译器都能转化为非递归, 非尾递归的稍微麻烦,像hanio,qsort,NQ,很多的动态规划, 通常要借助附加的堆栈, 不过通常而言还是个很简单的问题 ...
[解决办法]
具体问题需要具体分析,至多有一般性的规则.

通用的的方法是递推方法或采用堆栈,
但前者并不能解决任意问题,
后者实质上还是递归,只不过采用非递归模拟其过程而已,
空间复杂度和时间复杂度变化不大.

热点排行