• java作业 2017.10.14


    课后作业一

    1.设计思想:

    (1)通过组合数公式计算:分别输入中的nk的值。定义一个计算n!的方法,然后调用方法分别计算出n!,k!,(n-k)!,然后通过公式=n!/(k!*(n-k)!)算出的值。

    (2)通过杨辉三角计算:分别输入中的nk的值。定义一个递归的函数public int C(int n,int k),int c.n==kc=1,n!=1&&k==1时,c=n;

    此外调用自身函数c=C(n-1,k)+C(n-1,k-1)

    2.程序流程图:

    (1)

     

    (2)

     

    3.程序源代码:

    import java.math.BigInteger;

    import java.util.Scanner;

    public class Homework1

    {

        public static void main(String args[])

        {

         Scanner input=new Scanner(System.in);

         int n,k,c;

            B b=new B();

            System.out.println("使用组合数公式的方法:");

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

         n=input.nextInt();

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

         k=input.nextInt();

         System.out.println("结果:"+"C "+ n+""+k+"的值为:"+b.C1(n,k));

        

         System.out.println();

        

         System.out.println("使用杨辉三角方法的方法:");

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

         n=input.nextInt();

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

         k=input.nextInt();

         System.out.println("结果:"+"C "+ n+""+k+"的值为:"+b.C2(n,k));

        }

    }

    class B

    {

        public BigInteger C1(int n,int k)

        {

         BigInteger c;

         if(n==k)

         c= BigInteger.ONE;

         else if(n!=1&&k==1)

         c= BigInteger.valueOf(n);

         else 

         c= C1(n-1,k-1).add(C1(n-1,k));

         return c;

          

        }

    public BigInteger getFactorial(int n) {

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

    {

    return BigInteger.valueOf(1);

    }

    return BigInteger.valueOf(n).multiply(getFactorial((n-1)));

        }

        public BigInteger C2(int n,int k)

        {

         return getFactorial(n).divide((getFactorial(k).multiply(getFactorial(n-k)))) ;  

        }

    }

    4.结果截图:

     

    课后作业二

    1.设计思想:

    输入盘子的个数n,定义一个显示盘子移动的方法move,一个计算汉诺塔的方法hanoi,将movehanoi里调用。Hanoi的大致算法:将one座上的n-1个盘子(借助three座)移动到two塔,改变one ,two ,three peg1peg2 ,peg3的对应关系即可,递归结束条件n=1.

    2.程序流程图:

     

    3.程序源代码:

    import java.util.Scanner;

    public class Homework2

    {

        public static void main(String args[])

        {

         Scanner input=new Scanner(System.in);

         int n;

         System.out.println("输入盘子的个数:");

         n=input.nextInt();

         Hanoi h=new Hanoi();

         System.out.println("移动过程为:");

         h.hanoi(n, "peg1", "peg2","peg3");  

        }

    }

    class Hanoi

    {

    public void move(String x,String y)

    {

    System.out.println(x+"-->"+y);

    }

    public void hanoi(int n,String one,String two,String three)

    {

    if(n==1)

    move(one,three);

    else 

    {

    hanoi(n-1,one,three,two);

    move(one,three);

    hanoi(n-1,two,one,three);

    }

    }

    }

    4结果截图:

     

    课后作业三

     

    1.设计思想:

       输入一段字符串,定义一个AboutStringPalindrome类,三个私有属性int nint length,String strn用来控制递归结束的条件,length为字符串的长度。定义构造函数初始化私有属性。定义boolean类型的judgePalindrome方法用来判断,定义showJudgePalindrome来输出结果。

    2.程序流程图:

     

    3.程序源代码:

    import java.util.Scanner;

    public class Homework3

    {

        public static void main(String args[])

        {

         Scanner input=new Scanner(System.in);

         System.out.println("输入一个字符串:");

         String str=input.nextLine();

         AboutSringPalindrome a=new AboutSringPalindrome(str);

         System.out.println();

         System.out.print("判断结果:");

         a.showJudgePalindrome();

        }

    }

    class AboutSringPalindrome

    {

    private int n;

    private int length;

    private String str;

    public AboutSringPalindrome(String str2)

    {

    this.n=1;

    this.length=str2.length();

    this.str=str2;

    }

    public Boolean judgePalindrome(String str,int n,int length)

    {

         boolean flag;

         if(str.charAt(n-1)==str.charAt(length-n))

         flag=true;

         else

         flag=false;

        

    if(n==length/2)

    {

    if(str.charAt(n-1)==str.charAt(length-n))

    {

    return true;

    }

    else

    return false;

    }

    else 

    return flag&&judgePalindrome(str,n+1,length);

    }

    public void showJudgePalindrome()

    {    

    if(length==0||length==1)
    {
    System.out.println("该字符串回文");
    }
    else
    {
    if(judgePalindrome(str, n, length))
    System.out.println("该字符串回文");
    else
    System.out.println("该字符串不回文");
    }

    }

    }

    4结果截图:

     

  • 相关阅读:
    TechRoad_oneStep_0509
    TechRoad_0417
    [Network] 判断设备是否能访问 Internet
    云原生相关知识点
    Algorithm: 多项式乘法 Polynomial Multiplication: 快速傅里叶变换 FFT / 快速数论变换 NTT
    Mac下配置Apache服务器
    解决antdv 中input每输入一个字符就失去焦点
    *装饰者模式(Decorator)
    *单例模式(singleton)
    ubuntu20.04 线缆已拔出
  • 原文地址:https://www.cnblogs.com/ssyh/p/7660708.html
Copyright © 2020-2023  润新知