读书人

递归函数化迭代有什么技能吗

发布时间: 2013-01-11 11:57:35 作者: rapoo

递归函数化迭代有什么技巧吗?
哪些递归函数不能简化迭代?如何证明的?
简单的递归函数(只调用一次的)如

int f(int n)
{
if(n>0)
f(n-1);
return n;
}
我会很简单的变成一个循环,但是一个调用两次以上的递归函数
int f(int *a,int b,int c)
{
if(b<c)
{
int p=c/2;
f(a,b,p);
f(a,p+1,c);
}
/**do**/
}
或者更复杂的递归改如何改写呢?
求大神介绍多年改写经验!!!!!谢谢!!!!!
[解决办法]

int f(int *a,int b,int c)
{
if(b<c)
{
int p=c/2;
f(a,b,p);
f(a,p+1,c);
}
/**do**/
}


拿这个来说,如果当a,b,p给定后,f(a,b,p)导致的结果是固定不变的,就可以写成循环
尾递归可以消除,别的嘛...

读书人网 >软件架构设计

热点推荐