Java 如何编写接受2个整数的递归置换方法
我需要写一个不需要n/(右)!。这在for循环中很容易做到,但我不能递归地解决它。这是到目前为止我的代码Java 如何编写接受2个整数的递归置换方法,java,recursion,int,permutation,Java,Recursion,Int,Permutation,我需要写一个不需要n/(右)!。这在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); } } 我不知道如
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);
}
}
我不知道如何设置返回。基本上,你可以将其视为一个正常的阶乘,接受递减
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
您需要了解如何在至少一个参数较小(n-1
或r-1
)的情况下调用permut
。这需要一些数学思考。如果你有permut(n,r-1)或permut(n-1,r)[作为一个例子],你怎么能从中得到结果呢?我想我会减少r,因为这基本上就是它所做的迭代量。非常感谢。我不知道如何让它运行r次,但现在减少r直到达到1是有意义的。