慎用Java递归调用

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错

<

div id=”content” contentScore=”1177″>在java语言中,使用递归调用时,如果过多的调用容易造成java.lang.StackOverflowError即栈溢出和程序执行过慢。这是一个潜在Bug和影响程序执行效率问题,需要谨慎使用。

下面先看造成java.lang.StackOverflowError即栈溢出问题:

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”,当到达一定值时,报如下错误:


未经允许不得转载:演道网 » 慎用Java递归调用

赞 (0)
分享到:更多 ()
已有 0 条评论