class Factorial {
int fact(int n) {
int result;
if (n == 1) return 1;
result = fact(n-1) * n;
return result;
}
它是這樣工作的:當fact( ) 帶著引數1被呼叫時,該方法返回1;否則它返回fact( n-1 ) 與n的乘積。為了對這個表示式求值,fact() 帶著引數n-1 被呼叫。重複這個過程直到 n 等於 1,且對該方法的呼叫開始返回。
給你據個例子:
例如當計算3 的階乘時,對fact() 的第一次呼叫引起引數2的第二次呼叫。這個呼叫將引起fact 以引數1 的第三次呼叫,這個呼叫返回1,這個值接著與2(第二次呼叫時n的值)相乘。然後該結果(現為2)返回到fact()的最初的呼叫,並將該結果與3(n的初始值)相乘。這時得到答案,6。如果你在fact()中插入println() 語句,顯示每次呼叫的階數以及中間結果
class Factorial {
int fact(int n) {
int result;
if (n == 1) return 1;
result = fact(n-1) * n;
return result;
}
}
它是這樣工作的:當fact( ) 帶著引數1被呼叫時,該方法返回1;否則它返回fact( n-1 ) 與n的乘積。為了對這個表示式求值,fact() 帶著引數n-1 被呼叫。重複這個過程直到 n 等於 1,且對該方法的呼叫開始返回。
給你據個例子:
例如當計算3 的階乘時,對fact() 的第一次呼叫引起引數2的第二次呼叫。這個呼叫將引起fact 以引數1 的第三次呼叫,這個呼叫返回1,這個值接著與2(第二次呼叫時n的值)相乘。然後該結果(現為2)返回到fact()的最初的呼叫,並將該結果與3(n的初始值)相乘。這時得到答案,6。如果你在fact()中插入println() 語句,顯示每次呼叫的階數以及中間結果