• 课后作业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;
    }

    }

    【运行结果截图】

  • 相关阅读:
    雷林鹏分享:EJB回调
    雷林鹏分享:EJB注解
    雷林鹏分享:EJB持久性
    雷林鹏分享:EJB有状态会话Bean
    雷林鹏分享:EJB无状态Bean
    雷林鹏分享:EJB创建应用
    雷林鹏分享:EJB概述
    雷林鹏分享:EJB教程
    Java集合框架
    Java集合源码剖析——ArrayList源码剖析
  • 原文地址:https://www.cnblogs.com/-2016/p/7663358.html
Copyright © 2020-2023  润新知