目录

含义

从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;

从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数.用符号c(n,m) 表示.

公式

c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
!表示:阶乘

实现

java版的递归实现,如下

public class AssociationTest {
    public static void main(String[] args) {
        int[] num = new int[] { 1, 2, 3, 4, 5 };
        String str = "";
        // 求3个数的组合个数
        count(0, str, num, 3);
        // 求1-n个数的组合个数
        countAll(0, str, num);
    }
 
    public static void countAll(int i, String str, int[] num) {
        if (i == num.length) {
            System.out.println(str);
            return;
        }
        countAll(i + 1, str, num);
        countAll(i + 1, str + num[i] + ",", num);
    }
 
    public static void count(int i, String str, int[] num, int n) {
        if (n == 0) {
            System.out.println(str);
            return;
        }
        if (i == num.length) {
            return;
        }
        count(i + 1, str + num[i] + ",", num, n - 1);
        count(i + 1, str, num, n);
    }
}