public class Prod {
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;
}
}
}
这是我难以理解的书中的练习。为什么程序不仅会在两个数字相等之前递归,然后返回n
?此外,它说,
int result = n * recurse;
如何将int n
乘以递归(int, int)
?如何将一个整数乘以一组两个整数?
我以什么方式误解了这个节目?
编辑:这是一个不同的问题,因为我没有使用因子
答案 0 :(得分:2)
prod(x,y)
时, y!
相当于x=1
。
如果x
与1
不同,那么它会执行递归乘法(y * (y- 1) * (y -2) .... )
直到y = x
。
假设y > x
。
顺便说一句,如果x > y
则prod()
会崩溃。