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 发布