java编程问题,如何将递归法(recursion)转换成迭代法(iterative)

定义如下,T(0)=0,T(1)=1,T(2)=1,T(3)=3,T(n)=T(T(n-1)-1)+T(n-T(n-1));当n>3:用java递归法与迭代法分别写出程序... 定义如下,T(0) = 0, T(1) = 1, T(2) = 1, T(3) = 3,
T(n) = T(T(n - 1) - 1) + T(n - T(n - 1)); 当 n > 3: 用java递归法与迭代法分别写出程序求出T(20)
本人已经写出递归法如下:
import java.util.*;
public class T
{
public static void main(String[] parms)
{
process();
System.out.println("All done!");

}
public static void process()
{

int t;
int n;
long start, stop, elapsedTime;

n = 20;
start = System.nanoTime();

heyaNum = countHeya(n);

stop = System.nanoTime();
elapsedTime = stop - start;

System.out.println(t);
System.out.println("The elapsedTime is:"+ elapsedTime);

System.out.println("End of processing");

}

public static int countT(int n)
{
int t;

if(n==0)
{
t = 0;;
}
else if(n==1)
{
t = 1;
}
else if(n==2)
{
t = 1;
}
else if(n==3)
{
t = 3;
}
else
{
t = countT(countT(n-1)-1)+countT(n-countT(n-1));
}

return t;
}
}

高手们,如何讲以上程序变成迭代法,用循环结构的
展开
 我来答
outspaceman19
2013-09-25 · TA获得超过1080个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:405万
展开全部
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以顺推或倒推的方法来完成
现在已知T(0) = 0, T(1) = 1, T(2) = 1, T(3) = 3
及T(n) = T(T(n - 1) - 1) + T(n - T(n - 1)); 当 n > 3:
你就可以从前往后推
比如像这样:
int a[100]={0,1,1,3};
while(n>3 && n<total)//total就是你需要求的最后一个数的下标
{
a[n] = a[a[n - 1] - 1] + a[n - a[n - 1]];
n++;
}
当然我这是简单写一下,你还要考虑是否越界什么的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式