课后作业1:使用计算机计算组合数 (1)使用组合数公式利用n!来计算 程序设计思想:
设计并调用大数求阶乘的方法结合组合数公式计算组合数的值。
程序流程图:程序源代码:
//信1605-2 张晨阳 20160955
/*
* 设计目的:设计并调用大数阶乘方法来计算组合数。
*/
package homework1;
import java.math.BigInteger;//引入BigInteger类包
import java.util.Scanner;//引入Scanner类包
public class Homework1
{
public static void main(String[] args)
{
System.out.print("请输入组合数中的n和k:");
Scanner input=new Scanner(System.in);//为Scanner类创建对象input,调用System.in传参
int n=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到n中
int k=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到k中
while(n<0||k<0||n<k)//判断n,k的值是否合理
{
System.out.print("输入错误,请重新输入n和k的值:");
n=input.nextInt();
k=input.nextInt();
}
BigInteger c;//定义长整型变量c用于存取组合数结果
c=N(n).divide(N(k)).divide(N(n-k));//调用递归求大数阶乘的方法
System.out.println("组合式运算结果为:"+c);
}
public static BigInteger N(int n)//递归求大数阶乘的方法
{
if(n==0||n==1)
{
return BigInteger.valueOf(1);
}
else
{
return BigInteger.valueOf(n).multiply(N(n-1));//递归调用
}
}
}
(2)使用递推的方法用杨辉三角形计算 程序设计思想:
使用递推的方法创建杨辉三角型二维数组来计算组合数。
程序流程图: 程序源代码://信1605-2 张晨阳 20160955
/*
* 设计目的:使用递推的方法创建杨辉三角型二维数组来计算组合数。
*/
package homework1;
import java.util.Scanner;//引用Scanner类包
public class Homework2
{
public static void main(String[] args)
{
System.out.print("请输入组合数中n的值:");
Scanner input=new Scanner(System.in);//为Scanner类创建对象input,调用System.in传参
int n=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到n中
System.out.print("请输入组合数中k的值:");
int k=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到k中
while(n<0||k<0||n<k)//判断n,k的值是否合理
{
System.out.print("输入错误,请重新输入n和k的值:");
n=input.nextInt();
k=input.nextInt();
}
long[][] a=new long[n+1][];//创建并为二维数组开辟行空间
for(int i=0;i<=n;i++)
{
a[i]=new long[n+1];//为每个行空间分别开辟列空间
}
a[0][0]=1;
for(int i=1;i<=n;i++)//为每个数组元素赋初值
{
for(int j=0;j<=n;j++)
{
if(j==0||j==n)
{
a[i][j]=1;
}
else
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}
System.out.print("组合数运算结果:"+a[n][k]);//输出结果
}
}
结果截图: (3)使用递归的方法用组合数递推公式计算 程序设计思想:使用递归的方法用组合数递推公式计算组合数。
程序流程图: