Exception in thread "main" java.lang.StackOverflowError .

牛A_牛C 2011-10-31 09:58:07
package 折半递归非递归;


public class RecursiveTest {
/** * 递归实现 * * @param n * @return */
public static double recursive(long n) {
if (n == 1) {
return Math.log(1);
}
else {
return Math.log(n) + recursive(n - 1);
}
}
/** * 非递归实现 * * @param n * @return */
public static double directly(long n) {
double result = 0;
for (int i = 1; i <= n; i++) {
result += Math.log(i);
}
return result;
}
public static void main(String[] args) {
int i = 5000000;

long test = System.nanoTime();
long start1 = System.nanoTime();
double r1 = recursive(i);
long end1 = System.nanoTime();
long start2 = System.nanoTime();
double r2 = directly(i);
long end2 = System.nanoTime();
System.out.println("recursive result:" + r1);
System.out.println("recursive time used:" + (end1 - start1));
System.out.println("non-recursive result:" + r2);
System.out.println("non-recursive time used:" + (end2 - start2));
}
}

运行后JAVA控制台输出:

Exception in thread "main" java.lang.StackOverflowError
at 折半递归非递归.RecursiveTest.recursive(RecursiveTest.java:11)
at 折半递归非递归.RecursiveTest.recursive(RecursiveTest.java:11)
at 折半递归非递归.RecursiveTest.recursive(RecursiveTest.java:11)

请问如何解决
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fytq813 2011-10-31
  • 打赏
  • 举报
回复
用递归出现这种情况很正常啊,而且,你的i非得那么大么?
java1109 2011-10-31
  • 打赏
  • 举报
回复
内存爆了..
牛A_牛C 2011-10-31
  • 打赏
  • 举报
回复
给内存 更大的空间么...........
kouyiSC 2011-10-31
  • 打赏
  • 举报
回复
调大内存。。。。那其他没有办法了。。。
牛A_牛C 2011-10-31
  • 打赏
  • 举报
回复
要很大,才能行啊!!!怎么处理啊

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧