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);
}
}
解决方案 »
- 请问:java成绩管理系统如何dispose一个面板!急……
- 关于for语句存在空语句的问题?输出的时候总是说for语句存在空语句,是怎么回事?
- java中socket服务端同时对连接中客户端下发数据方法
- 特别拐的面试题,那位高人给解答
- 如何才能在java中实现类似QQ好友头像的非规则图像按钮,急等!分数不够还可以再开帖加分
- 我在执行HQL查询时,总是报错,请哪位高手指点!!急急
- 想装个java开发环境看看,怎么装?
- JDBC连接数据库查询表中数据时出错,求助!!!
- 如何写这个正则表达式:判断一个字符串为数字字符串
- 一个简单问题(100分)
- 怎么样裁减图片
- 数独程序,写不下去了,请大家帮我整理下思路
while (a > 0) {
System.out.println(a);
test(a - 1);
}
a=5,这个循环就会一直执行下去。
根据我猜测的你的目地,请将形参a值传到类的一个成员变量(看你的类定义用static的)那里吧。
层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不变,会继续循环~
System.out.println(a);
//test(a - 1);
}
你就这样看看,已经就死了,你还test(a - 1),那不是又嵌套另外个死循环啊。
你改成:
while (a > 0) {
System.out.println(a);
//test( a-- );
}
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) {
}
说到这里你应该明白为什么死循环了吧
System.out.println(a);
test(a - 1);//a没有a--,所以a还是1,会继续循环
}
这样改
Test.test(5);
while (a > 0) {
System.out.println(a);
test(--a);
}