递归的最大次数还与参数与递归函数的复杂度有关。
/**
* 测试递归调用
* @version 1.0
*/
public class TestRecursive {
/**
* 递归相加.
* @param i <br><br>
* author lizhongde<BR>
* date Jul 11, 2013<br>
* remark <br>
*/
public void recursive(int i) {
System.out.println("第"+i+"次递归循环");
recursive (++i);
}
/**
* 测试.
* @param args <br><br>
* author lizhongde<BR>
* date Jul 11, 2013<br>
* remark <br>
*/
public static void main(String[] args) {
TestRecursive test = new TestRecursive();
test.recursive(10000);
}
}
程序运行出错:
第13894次递归循环
第13895次递归循环
Exception in thread "main" java.lang.StackOverflowError
at sun.nio.cs.UTF_8.updatePositions(UTF_8.java:58)
at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:392)
at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:252)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
at java.io.PrintStream.write(PrintStream.java:476)
at java.io.PrintStream.print(PrintStream.java:619)
at java.io.PrintStream.println(PrintStream.java:756)
at TestRecursive.recursive(TestRecursive.java:15)
at TestRecursive.recursive(TestRecursive.java:16)
at TestRecursive.recursive(TestRecursive.java:16)
at TestRecursive.recursive(TestRecursive.java:16)