程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java類的問題-java遞歸原理求高人解惑

java類的問題-java遞歸原理求高人解惑

編輯:編程綜合問答
java遞歸原理求高人解惑

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved