当输入100或1000的时候可以正常运行输出,为什么输入很大的值的时候会报异常???比如输入80000就会爆出异常 不是很理解这问题。。。
出现堆栈溢出
Exception in thread "main" java.lang.StackOverflowError
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)
at Test.File1List_3(Test.java:21)作者: 。。。。。。 时间: 2013-4-18 22:41
递归最容易导致的问题就是堆栈溢出了,一般来说操作系统给一个进程划分的栈内存是2M(好像是),按照正常的程序处理,局部变量进栈出栈,栈不太可能会溢出,但是递归会导致不会出栈,这就有可能导致堆栈溢出,你这里定义一个int型变量,即4字节,再加上保存的函数地址等信息,8000次递归,还有一些其他的入栈的局部变量,可能已经超出了最大的栈空间,所以溢出。作者: $love 时间: 2013-4-18 22:49
这个循环会一直递归,直到Num的值为1才会退出循环,当你传入的值太大,循环的次数就会增加。最后就会超出int能存储的最大值2147483647,所以才会有内存溢出的问题作者: 黄玉昆 时间: 2013-4-19 07:18 本帖最后由 黄玉昆 于 2013-4-19 07:24 编辑