CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

请问为啥会出现这种结果

楼主skucn()2006-06-02 08:18:50 在 Java / J2SE / 基础类 提问

package   demo;  
  import   java.io.*;  
  import   java.util.*;  
  import   java.lang.*;  
   
  public   class   Recall   {  
      static   void   hi(int   n){  
          if(n<=0)  
          return;  
          hi(n-1);  
          System.out.println("Hello"+   n);  
          //hi(n-1);  
      }  
      public   static   void   main(String[]   args){  
          Recall.hi(5);  
      }  
  }  
   
  结果为  
  Hello1  
  Hello2  
  Hello3  
  Hello4  
  Hello5  
  我以为是  
   
  Hello5  
  Hello4  
  Hello3  
  Hello2  
  Hello1 问题点数:20、回复次数:9Top

1 楼imA(男的不会,会的不男)回复于 2006-06-02 08:26:08 得分 5

递归,执行0的时候返回,然后弹出堆栈,执行1,然后弹出堆栈,执行2。。。。  
   
  依此类推,最后执行5。Top

2 楼skucn()回复于 2006-06-02 08:41:50 得分 0

为啥hi(int   n)   方法中hi(n-1)放到System.out.println("Hello"+   n);  
  会出现截然相反的结果?Top

3 楼skucn()回复于 2006-06-02 08:42:48 得分 0

请问为啥hi(int   n)   方法中hi(n-1)放到System.out.println("Hello"+   n)前后  
  会出现截然相反的结果?  
  Top

4 楼hudingchen(努力不一定成功,放弃一定失败。)回复于 2006-06-02 09:03:16 得分 15

你写的是递归函数,要清楚调用函数的顺序  
  h(5)->h(4)->h(3)->h(2)->h(1)->  
  ->System.out.println("Hello"+   1)  
  ->System.out.println("Hello"+   2)  
  ->System.out.println("Hello"+   3)  
  ->System.out.println("Hello"+   4)  
  ->System.out.println("Hello"+   5)  
   
   
  Top

5 楼zty_nit()回复于 2006-06-02 09:06:25 得分 0

递归嘛!Top

6 楼skucn()回复于 2006-06-02 09:19:12 得分 0

请问把   hi(int   n)   方法中hi(n-1)放到System.out.println("Hello"+   n)就不叫递归了吗?  
  按照hudingchen(辰辰)的解释程序改成这样  
   
  package   demo;  
  import   java.io.*;  
  import   java.util.*;  
  import   java.lang.*;  
   
  public   class   Recall   {  
      static   void   hi(int   n){  
          if(n<=0)  
          return;  
          //hi(n-1);  
          System.out.println("Hello"+   n);  
          hi(n-1);  
      }  
      public   static   void   main(String[]   args){  
          Recall.hi(5);  
      }  
  }  
  结果应该为:  
  Hello5  
  Hello4  
  Hello3  
  Hello2  
  Hello1  
  Hello1  
  Hello2  
  Hello3  
  Hello4  
  Hello5  
   
  不知道理解有没有错误    
  但结果为  
   
   
  Hello5  
  Hello4  
  Hello3  
  Hello2  
  Hello1  
   
   
  Top

7 楼skucn()回复于 2006-06-02 09:45:39 得分 0

自己顶一下Top

8 楼xiaofengsuilu()回复于 2006-06-02 10:44:21 得分 0

有道理,顶一下  
  请教:在递归的时候,那些数据是如何储存的?Top

9 楼hudingchen(努力不一定成功,放弃一定失败。)回复于 2006-06-02 14:01:31 得分 0

to   skucn():   你理解错了,把   hi(int   n)   方法中hi(n-1)放到System.out.println("Hello"+   n)叫递归,它的结果就应该是:  
  Hello5  
  Hello4  
  Hello3  
  Hello2  
  Hello1  
  自己设个断点看看  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:skucn
  • imA
  • hudingchen

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo