谁能告诉我这段代码运行后输出是啥

减肥啊啊啊啊啊 2015-06-10 05:45:47


public static void main(String[] args) {
test(5);
}

public static void test(int page) {
System.out.println(page);
while (++page < 11) {
test(page);
}
}



环境是win7 sp1 旗舰 8g内存 jdk版本是1.6.0_20
各位大神请问这段代码运行后的输出结果是什么。另外帮我解答下。。。。
谢谢各位大神了。。。
...全文
266 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
while(6<11){ while(7<11){ while(8<11){ while(9<11){ while(10<11){ } } } } } 外层要等内层的结束才能继续 递归使用if判断即可。
  • 打赏
  • 举报
回复
引用 10 楼 shijing266 的回复:
public static void main(String[] args) {
        test(5);
    }
 
    public static void test(int page) {
        System.out.println(page);
        int p =++page;
        while (p < 11) {
            test(page);
        }
    }
我想问,这个写法跟上面的有什么区别吗?
我感觉是没区别,但是执行起来的结果却是两个....不同
  • 打赏
  • 举报
回复
public static void main(String[] args) {
        test(5);
    }
 
    public static void test(int page) {
        System.out.println(page);
        int p =++page;
        while (p < 11) {
            test(page);
        }
    }
我想问,这个写法跟上面的有什么区别吗?
  • 打赏
  • 举报
回复
5
6
7
8
9
10
10
9
10
10
8
9
10
10
9
10
10
7
8
9
10
10
9
10
10
8
9
10
10
9
10
10
  • 打赏
  • 举报
回复
是while的错 debug跑起来确实挺怪的。。。 应该改为if 递归
引用 7 楼 Inhibitory 的回复:
while (++page < 11) { test(page); } 每一个数都会递归调用一次
湖中骑士 2015-06-11
  • 打赏
  • 举报
回复
这是递归了传递5进去之后走完到10结束 然后一层一层推出到最开始那一层之后又进去就这么 5 6 7 8 9 10 10 9 10 10 8 9 10 10 9 10 10 7 8 9 10 10 9 10 10 8 9 10 10 9 10 10
Inhibitory 2015-06-10
  • 打赏
  • 举报
回复
while (++page < 11) { test(page); } 每一个数都会递归调用一次
SUN丶XT 2015-06-10
  • 打赏
  • 举报
回复
引用 5 楼 sd4000784 的回复:
不要玩我啊各位,拜托说详细点
我刚刚改了下代码减少了循环的次数,来分析了一下 public static void main(String[] args) { test(1); } public static void test(int page) { System.out.println(page); while (++page < 4) { test(page); } } 这样输出的结果是{ 1 2 3 3 } 然后开启方法 第一次输出的结果是1,这里没有前++,所以没变还是1. 第二次输出的结果是2,因为第一次执行了while (++page < 4) {这一行代码,所以前++了一下,第二次执行到while循环的时候,还是满足执行的条件,所以又调用了一次test 第三次输出还是如第二次一样输出了前++的结果为3,但是此时再去执行while时,却已经走不通了,因为前++之后变成了4,,不满足while执行的条件,但是这里他又重新进入了这一步 while (++page < 4) ,此时的page再次变成2...运行完前++这一步之后变成3,我执行到这里的时候感觉有点纳闷,难道是因为静态变量的关系? 到这里我也表示跟楼主同问。。希望有大牛来解答。。
  • 打赏
  • 举报
回复
不要玩我啊各位,拜托说详细点
SUN丶XT 2015-06-10
  • 打赏
  • 举报
回复
相当于是循环条用了test方法,当page=11的时候将不会再执行。
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
5
6
7
8
9
10
10
9
10
10
8
9
10
10
9
10
10
7
8
9
10
10
9
10
10
8
9
10
10
9
10
10
可以说详细点吗
SUN丶XT 2015-06-10
  • 打赏
  • 举报
回复
结果 5 6 7 8 9 10 10 9 10 10 8 9 10 10 9 10 10 7 8 9 10 10 9 10 10 8 9 10 10 9 10 10
Inhibitory 2015-06-10
  • 打赏
  • 举报
回复
5
6
7
8
9
10
10
9
10
10
8
9
10
10
9
10
10
7
8
9
10
10
9
10
10
8
9
10
10
9
10
10

67,549

社区成员

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

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