因为测试递归程序谢了一个简单的测试程序
public class Test
{
public static void main(String[] args) {
T t=new T();
long b=System.currentTimeMillis();

t.test();
long e=System.currentTimeMillis();
long time=e-b;
System.err.println("所用时间:"+time);
}
}
运行的时候会出现
.....
显示变量:4453
显示变量:4454 Exception in thread "main" java.lang.StackOverflowError
运行到第4454次的时候就出现异常了 原因是因为 当应用程序递归太深而发生堆栈溢出时,抛出该错误。 请问各位高手有没有什么好的解决方案?
以上程序仅此是测试递归 没有其他的意义 其实用一个循环一样可以实现上面的效果  谢谢各位了!~~~

解决方案 »

  1.   

    你可以根据时间的长度,long time=e-b; 
    根据这个time来判断,到了一定的时候,终止循环
      

  2.   

    1.调整栈的大小:-Xss<size>
    2.在你的递归函数(也就是test())里, 尽量在堆上分配空间,减少在栈上分配空间(主要就是多用new来代替局部变量)。
      

  3.   

    完全可以控制递归的层数啊
    digui(int i){
      System.out.println("层数:"+i);
      digui(i+1);
    }
    digui(1);