我需要编写一个执行n!/(n-r)!的方法。这在for循环中很容易做到,但我不能递归地解决它。到目前为止,这是我的代码。
public static int permut(int n, int r) {
if (r == 0) {
return 0;
} else if (r==1){
return n;
} else {
return n * permut(n, r-1)/permut(n,r-1);
}
}
我不知道如何设置回报。
答案 0 :(得分:1)
基本上,您可以将此视为与普通阶乘相同,接受您递减n
和r
每次递归,并在r == 1
而不是n == 1
时停止。
public static int permut(int n, int r){
if(r == 1) return n;
return n*permut(n-1, r-1);
}
因此,如果n = 10
和r = 3
,您需要10!/(10-3)!
或10*9*8
,该计划将提供:
n = 10, r = 3, val = 10
n = 9, r = 2, val = 10*9
n = 8, r = 1, val = 10*9*8