java作业(2)

课后作业01 组合数

.设计思想:设计一个函数A(int n)用来求n的阶乘,

然后再设计一个函数B(int n,int k)求组合数,B函数调用

A函数代入组合式公式,极为方便。最后在主函数中进行输入

,调用。

.程序流程:

 设计一个函数int型A(int n)用来求n的阶乘并返回

 设计一个int型的函数B(int n,int k)用来求组合数,调用A使其简化,最后返回所求的组合数

 在main方法中定义n和k,进行输入赋值

 判断n是否大于k如果n比k小错误提示然后退出

 调用B函数求组合数

程序流程图

 

程序源代码:

import java.util.*;
public class Zuheshu {
  public static int JC(int n)
    {
      if(n==0||n==1)return 1;
      else return n*JC(n-1);

 

    }
  public static int Cnk(int n,int k)
    {
      return JC(n)/(JC(k)*JC(n-k));

 

    }


  public static void main(String args[])
    {

      int n,k;
      Scanner put=new Scanner(System.in);
      //System.out.println();
      System.out.println("请输入n和k:");
      n=put.nextInt();
      k=put.nextInt();
      if(k>n) {System.out.println("输入错误!");System.exit(-1);}
      System.out.println("组合数C n k为:");
      System.out.println(Cnk(n,k));
      System.out.println("组合数C n k-1为:"+Cnk(n,k-1));
      System.out.println("组合数Cnk 加上组合数Cnk-1为:"+(Cnk(n,k)+Cnk(n,k-1)));
      System.out.println("组合数C n+1 k为:"+Cnk(n+1,k));

    }

}

4.截图:

 

 

课后作业02 汉诺塔

设计思想:汉诺塔

1把A上的n-1个盘子借助C移到B

2把A上的第n个盘子移到C

3把B上的n-1个盘子借助A移到C

程序流程:

设计一个函数move(A,n,B)意思是把A上的第n个盘子移到C

设计函数hanoi(n,A,B,C)意思是把A上的n个盘子借助B移到C

 如果n=1即递归的条件只需move(A,1,C)直接把他移到C

如果n不为1,把A上的n-1个盘子借助C移到B,然后最后一个盘子

直接移到C,再把B上的n-1个盘子借助A移到C

程序流程图

 

程序源代码:

import java.util.*;
public class Hanoi {

  public static void move(char A,int n,char C)
    {

      System.out.println(n+","+A+","+C);

    }

  public static void hano(int n,char A,char B,char C)
    {
      if(n==1)move(A,1,C);
      else
        {
          hano(n-1,A,C,B);
          move(A,n,C);
          hano(n-1,B,A,C);
        }

    }

  public static void main(String args[])
    {
      int n;
      char A=65,B=66,C=67;
      Scanner put=new Scanner(System.in);
      System.out.println("请输入n:");
      n=put.nextInt();

      hano(n,A,B,C);

    }

}

4.截图:

 

 

课后作业 03 回文字符串

设计思想:

我们可以借助字符串的length,来对比两端的字符

通过length进行递归运算,比较第n个和第length-n,如果相等就递归下去,

否则返回flase,n从0到第length/2个

程序流程:

设计一个boolean函数用来判断回文数

递归比较第n个和第length-n个如果相等就继续递归,否则返回flase,n从第一个到第length/2个

 通过main函数输入字符串,调用函数判断

程序流程图

 

程序源代码:

package Test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class HuiWen {

public static void main(String[] args)throws Exception {
String str ="";
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in),256);
System.out.println("请输入一串字符,每个字或单词用空格隔开:");
str = br.readLine();
System.out.println("检查结果: " + huiwen(str,0,str.length()-1));
}
public static boolean huiwen(String s,int start,int end){
if(start == end) return true;
if(start > end){
System.out.println("输入有误!");
return false;
}
if(s.charAt(start) == s.charAt(end)){
return huiwen(s,start+1,end-1);
}
else{
return false;
}
}

}

4.程序截图:

 

 

posted @ 2017-10-13 22:54  天赐ct  阅读(194)  评论(0编辑  收藏  举报