zoukankan      html  css  js  c++  java
  • 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("该字符串不是回文字符串");
    }
    }
    }
    }

    结果截图:

     

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/mqlblog/p/7660897.html
Copyright © 2011-2022 走看看