大家。需要你的帮助。陷入了 Downey 和 Mayfield 的“Think Java”中的练习 6.6:
public static void main(String[] args) {
System.out.println(prod(1, 4));
}
public static int prod(int m, int n) {
if (m == n) {
return n;
} else {
int recurse = prod(m, n - 1);
int result = n * recurse;
return result;
}
}
prod到底是做什么的?你能解释一下吗?
我知道它需要 1 和 4 作为参数,并首先将它们相互比较。然后,由于 1 不等于 4,它会转到 else 并再次转到 prod 方法,这次带有参数 1 和 3。依此类推。
我在具有中间递归输出的编辑器中运行代码,以查看prod内部发生了什么。因此得到recurse = 1、recurse = 2、recurse = 6。但它们是如何生产的呢?
最佳答案
prod(1, 4)
通话
prod(1, 3)
调用
prod(1, 2)
调用
prod(1, 1)
返回 1
然后
prod(1, 2) returns n * recurse, which is 2 * 1 = 2
然后
prod(1, 3) returns n * recurse, which is 3 * 2 = 6
然后
prod(1, 4) returns n * recurse, which is 4 * 6 = 24
关于java - Java中具体的递归方法是如何工作的? Think Java 书中的练习 6.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493983/