课后作业:计算组合数

1程序设计思想:
用fac()函数求n的阶乘,然后从键盘输入要求的组合数的从C(m,n)的值,比较m,n的大小,如果m>n,则用递归计算,否则输出异常。
2程序流程图

package zuheshu;//信 1605-3 张运涛
import java.util.Scanner;
public class Zuheshu {
Scanner input=new Scanner(System.in);
public int fac(int n)
{int s=1;
while(n>0)
{
s=s*n;
--n;
}
return s;
}
public void display()
{System.out.println("使用递归的方法用组合数公式计算");
int m,n;
int t1=0;
int a,b,c;
System.out.println("请输入组合数m的值:");
Scanner input=new Scanner(System.in);
m=input.nextInt();
System.out.println("请输入组合数n的值:");
n=input.nextInt();
Zuheshu z=new Zuheshu();
if(n!=0&&m>n)
{
a=z.fac(m);
b=z.fac(n);
c=z.fac(m-n);
t1=a/(b*c);//c(n,m)的值
}}
public static void main(String[] args) {
// TODO Auto-generated method stub
int m,n;
int t1=0,t2=0,t3 = 0;
int a,b,c;
System.out.println("请输入组合数m的值:");
Scanner input=new Scanner(System.in);
m=input.nextInt();
System.out.println("请输入组合数n的值:");
n=input.nextInt();
Zuheshu z=new Zuheshu();
if(n!=0&&m>n)
{
a=z.fac(m);
b=z.fac(n);
c=z.fac(m-n);
t1=a/(b*c);//c(n,m)的值
t2=n*t1/(m-n+1);//c(n-1,m)的值
t3=t1+t2;
}
System.out.println("组合数为C("+n+","+m+")="+t1);
//System.out.println("组合数为C("+(n-1)+","+(m)+")="+t2);
System.out.println("组合数为C("+(n)+","+(m+1)+")="+t3);
}
}


浙公网安备 33010602011771号