21xrx.com
2024-12-23 01:42:03 Monday
登录
文章检索 我的文章 写文章
java实现排列组合计算
2023-06-14 22:50:34 深夜i     --     --
java排列组合计算 递归 循环

在数学中,排列和组合是常见的计算方法。在Java里,也可以很方便地实现排列组合计算。下面我们来看一下具体的实现方法。

在Java中,可以利用递归和循环两种方法来实现排列组合计算。下面我们分别来介绍。

**方法一:递归实现排列组合计算**

递归是一种非常方便的实现方法。首先,我们需要定义两个函数,一个用来求阶乘,一个用来求组合数。


//求阶乘

public static long factorial(int n){

  if(n==0||n==1)

    return 1;

  else{

    return n*factorial(n-1);

  }

}

//求组合数

public static long combination(int n, int m){

  if(m>n)

    return 0;

  else{

    long a=factorial(n);

    long b=factorial(m)*factorial(n-m);

    return a/b;

  }

}

接下来,我们利用递归的方法来实现排列计算和组合计算。


//递归实现排列计算

public static long permutation(int n, int m){

  if(m==0)

    return 1;

  else{

    return permutation(n,m-1)*(n-m+1);

  }

}

//递归实现组合计算

public static long combination(int n, int m){

  if(m==0||m==n)

    return 1;

  else{

    return combination(n-1,m)+combination(n-1,m-1);

  }

}

以上就是递归实现排列与组合计算的方法。

**方法二:循环实现排列组合计算**

相对于递归,循环的实现方法更加简单易懂。我们同样需要定义两个函数,一个用来求阶乘,一个用来求组合数。


//求阶乘

public static long factorial(int n){

  long res=1;

  for(int i=1;i<=n;i++){

    res*=i;

  }

  return res;

}

//求组合数

public static long combination(int n, int m){

  if(m>n)

    return 0;

  else{

    long a=factorial(n);

    long b=factorial(m)*factorial(n-m);

    return a/b;

  }

}

然后,我们就可以利用循环的方法来实现排列计算和组合计算。


//循环实现排列计算

public static long permutation(int n, int m){

  long res=1;

  for(int i=n;i>=n-m+1;i--){

    res*=i;

  }

  return res;

}

//循环实现组合计算

public static long combination(int n, int m){

  long res=1;

  for(int i=1;i<=m;i++){

    res=res*(n-m+i)/i;

  }

  return res;

}

以上就是循环实现排列与组合计算的方法。

综上所述,我们可以用递归或循环的方法来实现排列组合计算。不同的方法有不同的优点和缺点,可以根据实际情况选择适合自己的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复