- 2
Explanation needed
can someone explanation me why the result is 5? [...] system.out.print(f(3)); [...] public static int f(int x){ if(x==0) return 2; else return 1+f(x-1); [...]
2 Réponses
+ 4
- first call of f() is done with parameter x==3
> enter in f() with x==3:
- as x!=0, f(3) must return 1+f(x-1),
- so call f() with x==2
> enter in f() with x==2:
- as x!=0, f(2) must return 1+f(x-1),
- so call f() with x==1
> enter in f() with x==1:
- as x!=0, f(1) must return 1+f(x-1),
- so call f() with x==0
> enter in f() with x==0:
- as x!=0, f(2) return 2
- return 1+f(0) == 1+2 == 3
- return 1+f(1) == 1+(1+f(0)) == 1+3 == 4
- return 1+f(2) == 1+(1+f(1)) == 1+(1+(1+f(0))) == 1+4 == 5
- print the returned value by f(3) == 1+f(2) == 5
- 1
Thx!