zoukankan      html  css  js  c++  java
  • 02-方法-作业

    作业一

    一、组合数n!计算Cn,k=n!/k!/(n-k)!

    设计思想

    (1)输入nk

    (2)判断nk的大小

    (3)判断nk是否为10

    (4)计算nK!(n-k)!,最后计算除Cnk

    流程图


    源代码
    import java.math.BigInteger;
    import java.util.Scanner;


    public class Zuoye01 {

     
     public static void main(String[] args) {
      System.out.print("请输入N:");
      
      Scanner scanner=new Scanner(System.in);
      int n=scanner.nextInt();
      
      System.out.print("请输入K:");
      Scanner reader=new Scanner(System.in);
      int k=scanner.nextInt();
      if(n<k){System.out.println("输入错误!");return;}
      else{
      long  number=0;
      number=calculateN(n)/(calculateN(k)*calculateN(n-k));
      System.out.println("Cnk  :"+number);
      }
      
     }
     
     
     public static long calculateN(int n) {
      if(n==1 || n==0){
       return 1;
      }
      
      return n*calculateN(n-1);
     }
    }
    程序截图

    二、使用递推方法用杨辉三角计算

    设计思想

    1)输入nk

    2)判断nk的大小

    3)判断nk是否为10

    4)计算nK!(n-k)!n+1-k)!(k-1)!

    5number1=Cnk-1),number2=C(n,k)

    6)计算出结果number1+number2

    流程图

    源代码

    import java.math.BigInteger;

    import java.util.Scanner;

    public class Zuoye01 {

    public static void main(String[] args) {

    System.out.print("请输入N:");

    Scanner scanner=new Scanner(System.in);

    int n=scanner.nextInt();

    System.out.print("请输入K:");

    Scanner reader=new Scanner(System.in);

    int k=scanner.nextInt();

    if(n<k){System.out.println("输入错误!");return;}

    else{

    long  number1=0;

    long number2=0;

    number1=calculateN(n)/(calculateN(k-1)*calculateN(n+1-k));

    number2=calculateN(n)/(calculateN(k)*calculateN(n-k));

    System.out.println("C(n+1,k) = :"+(number1+number2));

    }

    }

    public static long calculateN(int n) {

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

    return 1;

    }

    return n*calculateN(n-1);

    }

    }

    程序截图

    二、使用递归的方法使用组合数递推公式计算

    设计思想

    (1)输入n

    (2)判断n是不是负数

    (3)递归计算出结果

    源代码

    //三、使用递归的方法使用组合数递推公式计算

    //计算从1加到n

    import java.math.BigInteger;

    import java.util.Scanner;

    public class Zuoye01 {

    public static void main(String[] args) {

    System.out.print("请输入N:");

    Scanner scanner=new Scanner(System.in);

    int n=scanner.nextInt();

    if(n<0){System.out.println("输入错误!");return;}

    else{

    long  number1=0;

    number1=n+calculateN(n-1);

    System.out.println("1+2+...+"+n+":="+number1);

    }

    }

    public static long calculateN(int n) {

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

    return 1;

    }

    return n*calculateN(n-1);

    }

    }

    程序截图

    作业二

    //汉诺塔

    一、设计思想

    1)用户输入个数

    2)使用递归将An-1个移动到B上,C为过度

    3)将A上最后一个移动到C

    4)递归将Bn-1个移动到CA为过度

    二、流程图

    三、源代码

     

    public class Hanoi {

        

        //使用递归法求解含有n个不同大小盘子的汉诺塔移动路径,参数n为盘子数,把A塔上盘子全部移动到C塔上,B为过渡塔

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

            if(n == 1){

                System.out.print(A+"——>"+C+" ");    

            }

            else{

                recursionHanoi(n-1,A,C,B);         //使用递归先把A塔最上面的n-1个盘子移动到B塔上,C为过渡塔

                System.out.print(A+"——>"+C+" ");       //把A塔中底下最大的圆盘,移动到C塔上

                recursionHanoi(n-1,B,A,C);         //使用递归把B塔上n-1个盘子移动到C塔上,A为过渡塔

            }

        }

       public static void main(String[] args){

            System.out.println("请输入盘子总数n:");

            Scanner in = new Scanner(System.in);

            int n = in.nextInt();    

            recursionHanoi(n,'A','B','C');    

        }

    }

    四、程序截图

     

    作业三

    //判断字符是否是回文数

    一、设计思想

    (1)输入任意字符串

    (2)递归判断字符第一个i和最后一个j是否相同

    (3)i++j--,直到ij相等或i>j

    (4)相同就输出true

    二、流程图

    一、源代码

    import java.util.Scanner;

    public class Zuoye03 {

    public static void main(String args[]){

    Scanner in = new Scanner(System.in);

    String str=in.nextLine();

    int i=0;

    int j=str.length()-1;

    System.out.println(str+"是否是回文数?"+Zuoye03.Palindrome(str, i, j));

    }

    public static boolean Palindrome(String s,int i,int j){

    if(i>j){

    return true;

    }

    else if(i==j){

    return true;

    }

    else{

    return (s.charAt(i)==s.charAt(j)&&Palindrome(s,i+1,j-1));  //递归

    }

    }

    }

    二、程序截图

     

  • 相关阅读:
    How to install php 7.x on CentOS 7
    Azure新建的CentOS设置root账户的密码
    远程激活.NET REFLECTOR(不能断网)
    C# WebApi 配置复杂路由不生效的问题
    在Mac上激活Adobe产品
    WIN10更新后出现无法联网的问题
    Mac安装SSHFS挂载远程服务器上的文件夹到本地
    输入三个数值,输出其中的最大值和最小值
    登录接口,只为自己能尽快吐槽一下这段代码
    随手记
  • 原文地址:https://www.cnblogs.com/0710whh/p/7659871.html
Copyright © 2011-2022 走看看