因为测试递归程序谢了一个简单的测试程序
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次的时候就出现异常了 原因是因为 当应用程序递归太深而发生堆栈溢出时,抛出该错误。 请问各位高手有没有什么好的解决方案?
以上程序仅此是测试递归 没有其他的意义 其实用一个循环一样可以实现上面的效果 谢谢各位了!~~~
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次的时候就出现异常了 原因是因为 当应用程序递归太深而发生堆栈溢出时,抛出该错误。 请问各位高手有没有什么好的解决方案?
以上程序仅此是测试递归 没有其他的意义 其实用一个循环一样可以实现上面的效果 谢谢各位了!~~~
根据这个time来判断,到了一定的时候,终止循环
2.在你的递归函数(也就是test())里, 尽量在堆上分配空间,减少在栈上分配空间(主要就是多用new来代替局部变量)。
digui(int i){
System.out.println("层数:"+i);
digui(i+1);
}
digui(1);