论坛首页 Java企业应用论坛

两段java代码的比较

浏览 14909 次
精华帖 (0) :: 良好帖 (16) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-05  
dennis_zane 写道


无语了,0<10000,一次还没跑完。


我错了,撞墙  
0 请登录后投票
   发表时间:2008-06-05  
dennis_zane 写道
leelj 写道
import java.util.ArrayList;   
import java.util.List;   
  
public class TailRecursionTest {   
    public static void main(String[] args) {   
        TailRecursionTest t = new TailRecursionTest();   
        t.a(0);   
    }   
  
    public void a(int j) {   
        System.out.println(j);   
        j++;   
        if (j<10000)  //if (j!=10000) 也可以
            return;   
        List list = new ArrayList<Integer>(100000);   
        
        a(j);   
    }   
}   

递归 ,学习,以上我把if条件小改动了下,可以成功,不知道怎么解释:)


无语了,0<10000,一次还没跑完。



^_^ 有意思
0 请登录后投票
   发表时间:2008-06-05  
基本上禁止公司成员使用任何形式的递归
0 请登录后投票
   发表时间:2008-06-05  
像这种线性的累加当然可以for或while循环,但是当碰到一棵时, 不用递归用while或for循环怎么来完成呢?
用一个while再一个栈来完成, 那也是递归啊!
0 请登录后投票
   发表时间:2008-06-05  
我觉得编译器对这个优化置之不理还是很有道理的。
0 请登录后投票
   发表时间:2008-06-06  
楼主的意思是递归所带来的垃圾回收的问题,对吧?
0 请登录后投票
   发表时间:2008-06-07  
在我的电脑上,第二个示例正常结束。

java -version
java version "1.5.0_13"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237)
Java HotSpot(TM) Client VM (build 1.5.0_13-119, mixed mode, sharing)
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics