int i=1;
int Test(int n){
System.out.println("*****************"+(i++));
int result =0;
if(n==1)
return 1;
result = Test(n-1)*n;
System.out.println(result+" "+n);
return result;
}
我進行調試,比如n=8,只打印第一條語句,打了八次,當n=1時返回結果1,跳出方法,然後繼續執行,此時n變為2,為何?再然後只執行第二條打印語句的內容,為何?直到n變為8。求解啊...
遞歸方法雖然是方法調用方法本身,但是每次調用的時候變量是不共享的
你可以這樣理解 以8為例
System.out.println("*****************"+(i++));
int result =0;
if(n==1)
return 1;
result = Test(n-1)*n;
這段代碼執行的時候第一層(n=8)調用了第二層(n=7),第二層調用了第三層(n=6),以此類推
到達第八層之後n=1,return後不再繼續調用,此時由第八層(n=1)返回至第七層(n=2)來執行
System.out.println(result+" "+n);
return result;
第七層將n=2執行完畢後回到第六層n=3再次執行這段代碼,最後回到第一層n=8