public static void main(String[] args) {
//1.编写一个程序,输入n,求n!(用递归的方式实现)。4*3*2*1=4! 注:0!=1
System.out.println("4的阶乘为:" + getFactorial(4));
//2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
System.out.println("循环计算共" + getGroupKinds(new int[]{1, 2, 3, 4}, 3) + "种组合方式");
}
/**
* 1.编写一个程序,输入n,求n!(用递归的方式实现)。4*3*2*1=4!
*
* @param n
* @return
*/
public static int getFactorial(int n) {
return n < 1 ? 1 : n * getFactorial(n - 1);
}
/**
* 2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
* @param arr 总的元素
* @param m 表示取几个元素出来
* @return
*/
public static int getGroupKinds(int[] arr, int m) {
int count = 0;
int n = arr.length;
//方法一:循环每个位置可能的值
for (int i = 0; i < n; i++) {
for (int k = 0; k < n; k++) {
for (int j = 0; j < n; j++) {
if (i != k && k != j && i != j) {
//System.out.println("数字----"+arr[i]+arr[k]+arr[j]);
count++;
}
}
}
}
//方法二:公式计算 A(n,m)=n!/(n-m)! n表示总个数,m表示要取的个数 第一个位置有n种可能性,第二个有(n-1)种可能性。。。
System.out.println("阶乘公式计算结果:" + getFactorial(arr.length) / getFactorial(arr.length - m));
return count;
}
阶乘与排列的例子(从n个元素中取m个元素组成互不相同并且不重复的三位数)
最新推荐文章于 2022-05-31 22:13:25 发布
本文介绍了使用递归方法计算阶乘的程序实现,并探讨了如何通过循环和公式计算方法找出特定数字组合成不同三位数的可能数量。文章通过具体代码示例展示了递归和组合数学在实际编程中的应用。
1万+

被折叠的 条评论
为什么被折叠?



