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

解决方案 »

  1.   

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

  2.   

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

  3.   

    你写的是递归函数,要清楚调用函数的顺序
    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)
      

  4.   

    请问把 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
      

  5.   

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