2014-11-13 2 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==1 (int 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

Смежные вопросы