21xrx.com
2025-03-26 08:10:49 Wednesday
文章检索 我的文章 写文章
java实现排列组合计算
2023-06-14 22:50:34 深夜i     15     0
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;
}

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

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

  
  

评论区

请求出错了