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结果截图:

 

原文地址:https://www.cnblogs.com/ssyh/p/7660708.html