课后作业1:使用计算机计算组合数

【程序设计思想】

          三种计算方法用三个函数实现,第一个首先将阶乘的计算表达出来,然后计算组合数;

          第二个递推计算则是从前往后算,从已知的第一个一个一个往后计算,直到得到要求的;

          第三个递归计算是从后往前算,直到到已知的再一个一个计算出来。

【程序流程图】

【源代码】

//那颖 信1605-2班 20163448
import java.util.Scanner;
public class CompanyNum
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int x=input.nextInt();
int y=input.nextInt();
System.out.println(Method1(x,y));//方法1输出结果
System.out.println(Method2(x,y));//方法2输出结果
System.out.println(Method3(x,y));//方法3输出结果

}
//方法1
public static int Method1(int n,int k)
{
int x=Factorial(n)/(Factorial(k)*Factorial(n-k));
return x;
}
//阶乘计算方法
public static int Factorial(int n)
{
int f=1;
for(int i=1;i<=n;i++)
{
f*=i;
}
return f;
}
//方法2
public static int Method2(int n,int k)
{
int a[][]=new int[100][100];
int f=1;
if(n==0||k==0||n==k)
{
f=1;
}
else
{
a[0][0]=1;a[1][0]=1;a[1][1]=1;
for(int i=2;i<=n;i++)
{
a[i][0]=1;a[i][i]=1;
for(int j=1;j<=k;j++)
{

a[i][j]=a[i-1][j]+a[i-1][j-1];
f=a[i][j];
}
}
}
return f;
}
//方法3
public static int Method3(int n,int k)
{
int f=1;
if(n==1||n==0||k==0||n==k)
{
f=1;
}
else
{
f=Method3(n-1,k-1)+Method3(n-1,k);
}
return f;
}

}

【运行结果截图】

原文地址:https://www.cnblogs.com/-2016/p/7663358.html