• Java上机实验二


    课后作业1:(1)使用组合数公式利用n!来计算

    设计思想:设计一个方法,用来计算n的阶乘,方法参数为一个long类型变量。用递归方法实现计算阶乘计算,当传入参数为0或者1时为递归最后条件,不满足条件时进行递归调用,直到符合。然后在主函数将组合数公式表示出来进行计算。

    程序流程图:

    程序源代码:

    import java.util.Scanner;
    //(1)
    public class zuheshu {

    static public long jiecheng(long n)
    {
    long m=0;
    if(n==0||n==1)
    {
    m=1;
    }
    else
    {
    m=n*jiecheng(n-1);
    }
    return m;
    }
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input=new Scanner(System.in);
    long jieshu,dishu,p;
    System.out.println("请输入底数: ");
    dishu=input.nextLong();
    System.out.println("请输入阶数: ");
    jieshu=input.nextLong();
    p=jiecheng(dishu)/(jiecheng(jieshu)*jiecheng(dishu-jieshu));
    System.out.println("结果为: ");
    System.out.println(p);
    }

    }

    结果截图:

     

    (2)使用递推方法用杨辉三角形计算:

    设计思想:定义一个二维数组,用来表示底数和阶数,数组首元素定为1,定义循环体,表示出公式,一层层逐渐递推到数组的首元素,实现计算。

    程序流程图:

    程序源代码:

    import java.util.Scanner;
    //(2)
    public class yanghui {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input=new Scanner(System.in);
    long a[][]=new long[30][30];
    System.out.println("请输入底数: ");
    int n=input.nextInt();
    System.out.println("请输入阶数: ");
    int k=input.nextInt();
    a[0][0]=1;
    int i,j;
    for(i=1;i<30;i++)
    {
    for(j=1;j<=i;j++)
    {
    a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
    }
    System.out.println("得到的结果为: ");
    System.out.println(a[n+1][k+1]);
    }
    }

    结果截图:

    (3)使用递归的方法用组合数递推公式计算:

    设计思想:设计一个方法,当传入的底数或者阶数为1时为递归的最后条件,如果不满足则进行递归调用,两个参数逐渐降低,直到符合底数或者阶数为1的条件。

    程序流程图:

    程序源代码:

    import java.util.Scanner;
    //(3)

    public class jiecheng {

    static public long jiecheng(int n,int k)
    {

    if(n==1||k==1)
    {
    return 1;
    }
    else
    {
    return jiecheng(n-1,k-1)+jiecheng(n-1,k);
    }
    }
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input=new Scanner(System.in);
    System.out.println("请输入底数: ");
    int n=input.nextInt();
    System.out.println("请输入阶数: ");
    int k=input.nextInt();
    long num=jiecheng(n,k);
    System.out.println("得到的结果为:");
    System.out.println(num);
    }
    }

    结果截图:

    课后作业2.递归编程解决汉诺塔问题

    设计思想:将n个盘子从A座移到C座可以分解为三步:

    (1)将A上n-1个盘子借助C座先移到B座

    (2)将A座上剩下的一个盘移到C座

    (3)将n-1个盘从B座借助A座移到C座上

    程序流程图:

    程序源代码:

    import java.util.Scanner;
    public class hannuota {
    public static void move(char x,char y)
    {
    System.out.println(x+"-->"+y);
    }
    static public void hanoi(int n,char one,char two,char three)
    {
    if(n==1)
    {
    move(one,three);
    }
    else
    {
    hanoi(n-1,one,three,two);
    move(one,three);
    hanoi(n-1,two,one,three);
    }

    }

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input=new Scanner(System.in);
    System.out.println("请输入塔层数: ");
    int n=input.nextInt();
    hanoi(n,'A','B','C');
    }

    }

    结果截图:

    课后作业3.使用递归方式判断某个字串是否是回文。

    设计思想:首先输入一个字符串,运用函数判断字符串的位数,如果是单数则中间那个字符可以不进行判断,双数对称进行判断是否相等。在这个过程中需要将字符串转化为一个char类型的数组,用于比较。

    程序流程图:

    程序源代码:

    import java.util.Scanner;
    public class huiwen {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input=new Scanner(System.in);
    String num="abc";
    System.out.println("请输入字符串: ");
    num=input.next();
    int a=num.length();
    char[]b=num.toCharArray();//定义一个字符数组存放字符串每一位的字母
    int i,c,flag=0;
    c=a;
    if(c%2==0)
    {
    for(i=0;i<c/2;i++)
    {
    if(b[i]==b[a-1])
    {
    a=a-1;
    }
    else
    {
    flag=1;//旗帜变量为1表示不是回文数
    }
    }
    if(flag==0)
    {
    System.out.println("该字符串是回文字符串");
    }
    else
    {
    System.out.println("该字符串不是回文字符串");
    }
    }
    else
    {
    for(i=0;i<(c-1)/2;i++)
    {
    if(b[i]==b[a-1])
    {
    a=a-1;
    }
    else
    {
    flag=1;//旗帜变量为1表示不是回文数
    }
    }
    if(flag==0)
    {
    System.out.println("该字符串是回文字符串");
    }
    else
    {
    System.out.println("该字符串不是回文字符串");
    }
    }
    }
    }

    结果截图:

     

  • 相关阅读:
    git fetch, git pull, git pull -rebase区别
    Git 变更远程仓库地址
    终于有人把 Docker 讲清楚了,万字详解!
    Harbor install and used
    访问gitlab从http方式改为ssh方式,gitlab使用的不是标准22端口
    Linux下的ifconfig已经过时了,试试ip命令
    在CentOS 8上使用DNF管理软件包
    搭建hadoop的HA集群模式(hadoop2.7.3+hive+spark)
    spark运行时加载配置文件(hive,hdfs)
    java 如何用pattern 和 Matcher 来使用正则表达式(一)
  • 原文地址:https://www.cnblogs.com/mqlblog/p/7660897.html
Copyright © 2020-2023  润新知