public class RecursionTest { public static void recursion(int totalTimes,int time) { if(totalTimes > 1) { System.out.println("这是第 " + time + "次调用!"); totalTimes--; time++; recursion(totalTimes, time); } else { System.out.println("调用结束,共调用了" + time + "次"); return; } } public static void main(String[] args) { int totalTimes = 1000000; int time = 1; long startTime = System.currentTimeMillis(); System.out.println("嵌套调用起始时间:" + startTime); recursion(totalTimes, time); System.out.println("嵌套调用结束时间:" + System.currentTimeMillis()); System.out.println("总耗时:" + (System.currentTimeMillis() - startTime)); System.out.println("------------------------------------------------------------"); } }修改“totalTimes”,当到达一定值时,报如下错误:
public static void cycle(int totalTimes, int time) { if(totalTimes > 1) { System.out.println("这是第 " + time + "次调用!"); } else { System.out.println("调用结束,共调用了" + time + "次"); } }代替recuresion()方法:
public static void recursion(int totalTimes,int time) { if(totalTimes > 1) { System.out.println("这是第 " + time + "次调用!"); totalTimes--; time++; recursion(totalTimes, time); } else { System.out.println("调用结束,共调用了" + time + "次"); return; } }
startTime = System.currentTimeMillis(); System.out.println("循环调用起始时间:" + startTime); for (int index = totalTimes; index > 0; index--) { cycle(index, time); time++; } System.out.println("循环调用结束时间:" + System.currentTimeMillis()); System.out.println("总耗时:" + (System.currentTimeMillis() - startTime)); System.out.println("--------------------整个代码如下:
public class RecursionTest { public static void recursion(int totalTimes,int time) { if(totalTimes > 1) { System.out.println("这是第 " + time + "次调用!"); totalTimes--; time++; recursion(totalTimes, time); } else { System.out.println("调用结束,共调用了" + time + "次"); return; } } public static void cycle(int totalTimes, int time) { if(totalTimes > 1) { System.out.println("这是第 " + time + "次调用!"); } else { System.out.println("调用结束,共调用了" + time + "次"); } } public static void main(String[] args) { int totalTimes = 100000; int time = 1; long startTime = System.currentTimeMillis(); System.out.println("嵌套调用起始时间:" + startTime); recursion(totalTimes, time); System.out.println("嵌套调用结束时间:" + System.currentTimeMillis()); System.out.println("总耗时:" + (System.currentTimeMillis() - startTime)); System.out.println("------------------------------------------------------------"); startTime = System.currentTimeMillis(); System.out.println("循环调用起始时间:" + startTime); for (int index = totalTimes; index > 0; index--) { cycle(index, time); time++; } System.out.println("循环调用结束时间:" + System.currentTimeMillis()); System.out.println("总耗时:" + (System.currentTimeMillis() - startTime)); System.out.println("------------------------------------------------------------"); } }