public class Test {
public static void test(int a) {
while (a > 0) { 
System.out.println(a);
test(a - 1);
}
} public static void main(String[] args) {
Test.test(5);
}
}

解决方案 »

  1.   

    怎么看?说说!我还真不明白!初看!我也以为是死循环!但是用Eclipse debug的时候!就有点闹不明白了!
      

  2.   

    Test.test(5);
    while (a > 0) { 
        System.out.println(a);
        test(a - 1);
    }
    a=5,这个循环就会一直执行下去。
      

  3.   

    自己调用自己,而a并没有被赋值,所以a永远是5,造成死循环,估计楼主的意思是test(a--)
      

  4.   

    不是啊!最后一次的test(a-1)以后,a的值不是等于0吗?可是我不明白为什么又进入了while语句,而且a的值给赋值为1了;然后就不停的死循环了!
      

  5.   

    不死才怪。
    根据我猜测的你的目地,请将形参a值传到类的一个成员变量(看你的类定义用static的)那里吧。
      

  6.   

    过程是这样:
    层1 a = 5 调用test
    层2 a = 4 调用test
    层3 a = 3 调用test
    层4 a = 2 调用test
    层5 a = 1 调用test(这时的第6曾test中的while反回结果是false)
    但是,层5中a是1不变,会继续循环~
      

  7.   

    while (5 > 0) { 
          System.out.println(a);
          //test(a - 1);
    }
    你就这样看看,已经就死了,你还test(a - 1),那不是又嵌套另外个死循环啊。
    你改成:
    while (a > 0) { 
          System.out.println(a);
          //test( a-- );
    }
      

  8.   

    public class Test {
        public static void test(int a) {
            while (a > 0) { 
                System.out.println(a);
                test(a - 1);
            }
        }    public static void main(String[] args) {
            Test.test(5);
        }
    }这个死循环问题在 while (a > 0) { 
                System.out.println(a);
                test(a - 1);
            }
    假设 你在里边没有调用test(a - 1)这个也并没有输出System.out.println(a); 
     就会变成这个样子
     while (a > 0) { 
            }
    说到这里你应该明白为什么死循环了吧
      

  9.   

    a没有自减,a-1不能改变a的值,因此while(a>0)就成了死循环
      

  10.   

    while (a > 0) { 
                System.out.println(a);
                test(a - 1);//a没有a--,所以a还是1,会继续循环
            }
      

  11.   

    我靠!!不用看都知道是死的了!!!
    这样改
    Test.test(5); 
    while (a > 0) { 
        System.out.println(a); 
        test(--a); 
      

  12.   

    为什么要用while呢 a的值一直没有变 是跳不出这个while循环的