• 02课后作业


    1、使用计算机计算组合数

    使用组合数公式利用n!来计算

    (1)设计思想:设计功能函数fac()采用循环的方式,计算n!。在主类里输入所要计算的组合数的值,调用函数fac(),利用组合数计算公式计算出组合数。

    (2)程序流程图:

    (3)源程序代码:

    import java.util.Scanner;

    public class Cnumber {

    public static void main(String[] args) {

    long k,n,s,s1=1,s2=1,s3=1;

    Scanner scan=new Scanner(System.in);

    System.out.println("请输入:");

    n=scan.nextInt();

    k=scan.nextInt();

    s=fac(s1,n)/(fac(s2,k)*fac(s3,(n-k)));//调用fac()函数

    System.out.println("c(n,k)="+s);

    }

       public static long fac(long s,long n)//使用循环的方法计算n!

        {

       for(int i=1;i<=n;i++)

       {

       s=s*i;

       }

       return s;

    }

    }

    (4)结果截图:

    使用递推的方法用杨辉三角形计算

    (1)设计思想:输入c(n,k),设计函数sum()采用递推的方法计算n!,在主类里调用。递推“从前至后”。

    (2)程序流程图:

     

    (3)源程序代码:

    import java.util.Scanner;

    public class Cnumber3 {

    public static void main(String[] args) {

    long k,n,s,s1=1,s2=1,s3=1;

    Scanner scan=new Scanner(System.in);

    System.out.println("请输入组合数c(n,k):");

    n=scan.nextInt();

    k=scan.nextInt();

    System.out.println("c(n,k)="+sum(n,k));

    }

    static long sum(long n,long k)//递推

    {

    long s=1,s1=1,s2=1;

    for(long i=1;i<=n;i++)

    {

    s=s*i;

    }

    for(long i=1;i<=k;i++)

    {

    s1=s1*i;

    }

    for(long i=1;i<=n-k;i++)

    {

    s2=s2*i;

    }

    return s/(s1*s2);

    }

    }

     (4)结果截图:

    使用递归的方法用组合数递推公式计算

    (1)设计思想:设计递归函数计算阶乘,在主类里调用。

    2)程序流程图:

    (3)源程序代码:

    import java.util.Scblic class Cnumber2 {

    public static void main(String[] args) {

    long k,n,s,s1=1,s2=1,s3=1;

    Scanner scan=new Scanner(System.in);

    System.out.println("递推公式:c(n,k)=c(n-1,k-1)+c(n-1,k)");

    System.out.println("请输入:");

    n=scan.nextInt();

    k=scan.nextInt();

    s=fac(n-1)/(fac(k-1)*fac(n-k-2))+fac(n-1)/(fac(k)*fac(n-1-k));

    System.out.println("c(n,k)="+s);

    }

    public static long fac(long n)//递归函数

    {

    long f=1;

    if(n<0)

    System.out.println("输入错误!");

        if(n==0||n==1)

    f=1;

    else f=fac(n-1)*n;

    return f;

    }

    }

    (4)结果截图:

    2、递归编程解决汉诺塔问题。用Java实现

    (1)设计思想:输入盘子个数,设计两个函数move1()move()move1()函数实现从一个底座指向另一个底座的功能,move()为递归函数,在move()里调用move1(),在主类里调用move()

    (2)程序流程图:

    (3)源程序代码:

    import java.util.Scanner;

    public class Hannuota {

    public static void main(String[] args) {

    int peg1=1;//三个底座定义为1,2,3

    int peg2=2;

    int peg3=3;

    int n;//盘子的个数

    Scanner scan=new Scanner(System.in);

    System.out.println("input the number of diskes:");

    n=scan.nextInt();

    System.out.println("The step to move"+n+"diskes");

    move(n,peg1,peg2,peg3);

    }

    public static void move(int n,int peg1,int peg2,int peg3)

    {//将n个盘子借助peg2,移到peg3

    if(n==1)

    move1(peg1,peg3);

    else

    {

    move(n-1,peg1,peg3,peg2);

    move1(peg1,peg3);

    move(n-1,peg2,peg1,peg3);

    }

    }

    public static void move1(int p1,int p2)

    {

    System.out.println(p1+"->"+p2);

    }

    }

    }

    (4)结果截图:

    3、使用递归方式判断某个字串是否是回文数

    1)设计思想:输入字符串定义ij来比较前后位置的字符是否相同,设计递归函数judge(),在主类里调用。

    2)程序流程图:

     

    (3)源程序代码:

    import java.util.Scanner;

    public class Huiwenshu

    {

    public static void main(String[] args)

    {

    String str=" ";

    System.out.println("请输入要判断的字符串(true表示回文字串,false表示非回文字串)");

    Scanner input=new Scanner(System.in);

    str=input.next();

    int j=str.length()-1;

    int i=0;

    System.out.println(Huiwenshu.judge(str,i,j));

    }

    public static boolean judge(String s,int i,int j)

    {

    if(i>j)

    System.out.println("错误!");

    if(i==j)

    return true;

    else

    return(s.charAt(i)==s.charAt(j)) && judge(s,i+1,j-1);

    }

    }

    4)结果截图:

  • 相关阅读:
    编写高质量代码 改善Python程序的91个建议 (读后 小记)
    Python itertools.combinations 和 itertools.permutations 等价代码实现
    图论期末大作业编程题(如何判断一个4连通4正则图为无爪、无K4图)
    2017年6月 六级成绩 有感(致逝去的研究生生活)
    Machine Learning 方向读博的一些重要期刊及会议 && 读博第一次组会时博导的交代
    个人经历北航计算机学院博士生申请审核制的所感
    转载: beta分布介绍
    目标检测之积分图---integral image 积分图2
    目标检测之harr---点角检测harr
    模式匹配之尺度空间---scale space
  • 原文地址:https://www.cnblogs.com/xxlya/p/7664135.html
Copyright © 2020-2023  润新知