+ 15
Please help me explain this???
public class Program { public static int f(int x){ if (x==0) return 2; else return 1 + f(x-1); } public static void main(String[] args) { System.out.println(f(3)); } } // answer is 5
8 Réponses
+ 17
OK thanks I get it now very helpful......however i still think in the adding backwards this section:
x=2, 1+3=4
should be
x=2, 1+2=3
because 1 + f(x-1) = 1 + f(2- 1)
=> 1 + 2(1) =>. 1+2=3...
what do you think
+ 14
still don't get it
+ 14
" we have a base case and add backwards........"
+ 3
The above program is the program of Recursion
now in given program you had passed value 3 to function 'f'
so
from main method(system.out.print) calls goes to function 'f'
in first iteration value of x is 3
so if(x==0) gets false and it goes to else part
now actual implementation starts...
just remember one key point related to return is (( Return is transfer control statement which returns the value to its caller only (caller may be anything main, function anything keep this point in mind and read below description)
for Better understanding i maintain the operation number like 1,2,3...
## 1) else 1 + f(x-1) --> transfer value (2) to itself(recursion)
## 2) again if(x==0) gets false bcoz x=2
so it goes to else part
else 1 + f(x-1) --> transfer value (1) to itself(recursion)
## 3) again if(x==0) gets false bcoz x=1
so it goes to else part
else 1 + f(x-1) --> transfer value (0) to itself(recursion)
## 4) this time if(x==0) gets results true bcoz x=0
so it goes to statement present in if block
which is 'return 2'
now caller for --> (## 4) ) is (## 3) )
so return value 2 goes to (## 3) ) stage
## 5) so in this (## 3) ) we got value for expression f(x-1) i.e 2 so we implement statement present in else part
i.e 2+1 = 3
now caller for --> (## 3) ) is (## 2) )
so return value 3 goes to (## 2) ) stage
## 6) so in this (## 2) ) we got value for expression f(x-1) i.e 3 so we implement statement present in else part
i.e 3+1 = 4
now caller for --> (## 2) ) is (## 1) )
so return value 4 goes to (## 1) ) stage
## 7) so in this (## 1) ) we got value for expression f(x-1) i.e 4 so we implement statement present in else part
i.e 4+1 = 5
now caller for --> (## 1) ) is in main() method i.e System.out.print();
so return value 4 goes to System.out.print();
and finally it prints 5 as output...
thank you:)
may this explanation helps for understanding concept of Recursion