设计一个方法Combination(),给定两个非负整数m, n(m>n),计算C_n^m的值 例:C_3^5=(5×4×3)/(3×2×1) public class CombinationDemo { public static void main(String[] args) { System.out.println(Combination(6, 4)); //输出:15 System.out.println(Combination(10, 6)); //输出:210 } public static long Combination(int m, int n){ //补充方法代码 }}
时间: 2023-12-06 13:42:13 浏览: 74
public static long Combination(int m, int n){
long result = 1;
for(int i=1; i<=n; i++){
result = result * (m-i+1) / i;
}
return result;
}
相关问题
java设计一个方法Combination(),给定两个非负整数m, n(m>n),计算C_n^m的值
可以使用递归来实现组合公式:C_n^m = C_(n-1)^(m-1) + C_(n-1)^m
Java代码如下:
```java
public class Combination {
public static void main(String[] args) {
int n = 5;
int m = 3;
int result = combination(n, m);
System.out.println("C_" + n + "^" + m + " = " + result);
}
public static int combination(int n, int m) {
if (m == 0 || m == n) {
return 1;
} else {
return combination(n - 1, m - 1) + combination(n - 1, m);
}
}
}
```
输出结果为:C_5^3 = 10
用java设计一个方法Combination(),给定两个非负整数m, n(m>n),计算C_n^m的值
好的,我可以帮你设计这个方法。首先,我们需要知道组合数的计算公式:
C_n^m = n! / (m! * (n-m)!)
其中,n! 表示 n 的阶乘,即 n*(n-1)*...*2*1。
那么,我们可以用递归的方式来计算阶乘和组合数,具体实现如下:
```java
public class Combination {
public static int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
public static int combination(int m, int n) {
if (m == n) {
return 1;
} else {
return factorial(n) / (factorial(m) * factorial(n - m));
}
}
public static void main(String[] args) {
int m = 5;
int n = 10;
int result = combination(m, n);
System.out.println("C_" + m + "^" + n + " = " + result);
}
}
```
在上面的代码中,我们定义了两个方法:factorial() 和 combination()。factorial() 方法用来计算阶乘,而 combination() 方法则用来计算组合数。
最后,在 main() 方法中,我们给定了 m=5 和 n=10 的值作为示例,然后调用 combination() 方法计算 C_5^10 的值,并将结果打印出来。
希望这个代码对你有所帮助!
阅读全文