Osc*_*r F 0 java recursion static-methods
public class Recursive_Prob
{
public static void main(String[] args)
{
out.print("\f");
out.print(m(4));
}
public static int m(int a)
{
if (a < 0)
return 0;
else
return m(a-2) + n(a-1);
}
public static int n(int b)
{
if (b <= 0)
return 0;
else
return 1 + n(b-1);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个问题,询问m在调用方法时输出是什么out.print(m(4));我尝试解决它并且出来了,0但答案是4在我运行代码时.我最终得到了m(a-2)存在0而且那部分是正确的,但使用相同的逻辑,n(a-1)也是0如此清楚我做错了什么.有人可以解释这是如何工作的?
找出答案的最佳方法是绘制递归树.让我尝试 :
m(4)
/\
/ \
m(2) \
/\ n(3)
/ \ \
m(0) \ \
/\ n(1) 1+n(2)
/ \ \ \
m(-2) \ 1+n(0) \
/ n(-1) \ 1+n(1)
0 \ 0 \
0 \
1+n(0)
\
0
Run Code Online (Sandbox Code Playgroud)
加起来,结果应该是4.