2014-11-13 76 views
-3

的結果,我的代碼:無法理解遞歸

public static void main(String[] args) { 
     System.out.println(f(4)); 

    } 

    public static int f(int n){ 
     if(n == 1) return 1; 

     return n/f(n - 1); 
    } 

爲什麼這個代碼迴路4?

+0

見http://stackoverflow.com/questions/717725/understanding-recursion – elias

+0

這是通過在調試器單步調試代碼將有助於你理解的代碼做什麼。 –

回答

1

f(1)會明確地返回1

f(2)會給2/f(1)==2/1==2

f(3)會給3/f(2)==3/2==1int division

f(4)會給4/f(3)==4/1==4

+0

謝謝,我沒有注意int。 – gigs

0
f(4) -> 4/f(3) 
f(3) -> 3/f(2) 
f(2) -> 2/f(2) 
f(1) -> 1 

Subtituting值

f(2) -> 2/1 => 2 
f(3) -> 3/2 => 1 (since the return value is 1, 1.5 will be converted to 1) 
f(4) -> 4/1 => 4 
+0

是的,對我來說是恥辱))) – gigs