zoukankan      html  css  js  c++  java
  • 课堂作业02-2

    一、        课程作业01_1

    1.   实验题目


    使用组合数公式利用n!来计算⒈

    2.   设计思想

    设计一个可以求n!的方法,提示用户输入n和k两个变量,若输入的数符合要求,调用求阶乘的方法,套用公式,求出结果。

    3.   程序流程图

    4.   源程序代码

    import java.util.Scanner;

    public class Homework02_1 {

           public static void main(String[] args)

           {

                  Homework02_1 h=new Homework02_1();

                  h.go();

           }

           public void go()

           {

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

                  @SuppressWarnings("resource")

                  Scanner scanner=new Scanner(System.in);

                  int n=scanner.nextInt(),k=scanner.nextInt();

                  if(n>=k&&k>=0&&n>0)//判断n和k是否符合要求

                         System.out.println("C("+n+","+k+")="+f(n)/f(k)/f(n-k));

                  else System.out.println("输入的数不符合要求");

           }

           public int f(int n)//递归求阶乘

           {

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

                         return 1;

                  else

                         return n*f(n-1);

           }

    }

    5.   结果截图

     

    二、        课程作业01_2

    1.  实验题目

    使用递推的方法用杨辉三角形计算

     

    2.  设计思想

    根据用户输入的数创建一个数组,三角形,用数组把三角形,用递推法算出杨辉三角形中的每一个数,存在数组中,然后C(n,k)就等于数组中第n-1行k-1列的数。

    3.  程序流程图

    4.  源程序代码

    import java.util.Scanner;

     

    public class Homework02_1_2 {

          public static void main(String[] args)

          {

                   Homework02_1_2 h=new Homework02_1_2();

                   h.go();

          }

          public void go()

          {

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

                   @SuppressWarnings("resource")

                   Scanner scanner=new Scanner(System.in);

                   int n=scanner.nextInt(),k=scanner.nextInt();

                   if(n>=k&&k>=0&&n>0)//判断n和k是否符合要求

                             System.out.println("C("+n+","+k+")="+createArrayAndReturn(n,k));

                   else System.out.println("输入的数不符合要求");

          }

          public int createArrayAndReturn(int n,int k)

          {

                   int [][]array=new int[n+1][];

                   for(int i=0;i<=n;i++)

                   {

                             array[i]=new int[i+1];//创建一个第i行有i个元素的数组

                   }

                   for(int i=0;i<n+1;i++)

                   {

                             array[i][0]=1;//每行第一个和最后一个元素都为1

                             array[i][i]=1;

                            for(int j=1;j<i;j++)//其他的元素都为其上一行对应肩上两个元素的和

                             {

                                      array[i][j]=array[i-1][j-1]+array[i-1][j];

                             }

                   }

                   return array[n][k];

          }

    }

    5.  结果截图

    三、        课程作业01_3

    1.  实验题目


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

    2.  设计思想

    声明一个可以求C(n,k)值的函数,每次递推套用杨辉三角形公式,直到n=k或者k=1。

    3.  程序流程图

     

    4.  源程序代码

    import java.util.Scanner;

     

    public class Homework02_1_2 {

          public static void main(String[] args)

          {

                   Homework02_1_2 h=new Homework02_1_2();

                   h.go();

          }

          public void go()

          {

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

                   @SuppressWarnings("resource")

                   Scanner scanner=new Scanner(System.in);

                   int n=scanner.nextInt(),k=scanner.nextInt();

                   if(n>=k&&k>=0&&n>0)//判断n和k是否符合要求

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

                   else System.out.println("输入的数不符合要求");

          }

          public int C(int n,int k)//递推法运用杨辉三角形公式

          {

                   if(k==1)

                             return n;

                   else if(n==k)

                             return 1;

                   else return C(n-1,k-1)+C(n-1,k);//杨辉三角形公式

          }

    }

    5.  结果截图

    四、        课程作业02

    1.  实验题目

    递归编程解决汉诺塔问题。用Java实现

    2.  设计思想

    使用递归方法,定义一个move(char,char)方法和一个hanoi ( int,char,char,char)方法。

    第一步将A上n-1个盘子借助C移到B上

    第二步将A上一个盘子移到C上

    第三步将B上n-1个盘子借助A移到C上

    3.  程序流程图

    4.  源程序代码

    import java.util.Scanner;

     

    public class Homework02_2 {

          public static void main(String[] args)

          {

                   Homework02_2 h=new Homework02_2();

                   h.go();

          }

          public void go()

          {

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

                   @SuppressWarnings("resource")

                   Scanner scanner=new Scanner(System.in);

                   int n=scanner.nextInt();

                   if(n>=0)//判断n是否符合要求

                   {

                             System.out.println("移动"+n+"个盘子的步骤为:");

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

                   }

                   else System.out.println("输入的数不符合要求");

          }

          public void hanoi(int m,char one,char two,char three)

          {

                   if(m==1)

                             move(one,three);

                   else

                   {

                             hanoi(m-1,one,three,two);//第一步将A上n-1个盘子借助C移到B上

                             move(one,three);//第二步将A上一个盘子移到C上

                             hanoi(m-1,two,one,three);//第三步将B上n-1个盘子借助A移到C上

                   }

          }

          public void move(char x,char y)

          {

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

          }

    }

    5.  结果截图

    五、        课程作业03

    1.  实验题目

    使用递归方式判断某个字串是否是回文( palindrome )

    2.  设计思想

    取得用户输入的字符串,调用String的length()函数获得字符个数,声明一个数组,使用for循环和charAT函数将数组初始化。

    之后使用一个返回类型为boolean的递归函数,以循环次数和判断对应位置数字是否相等决定是否结束递归函数。

    3.  程序流程图 

    4.  源程序代码

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

     

    public class Homework02_3 {

          public static void main(String[] args)

          {

                   Homework02_3 h=new Homework02_3();

                   try {//处理有异常的方法

                             h.go();

                   } catch (IOException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                   }

          }

          public void go() throws IOException//声明这个方法是有风险的

          {

                   String input=null;

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

                   BufferedReader is=new BufferedReader(new InputStreamReader(System.in));

                   input=is.readLine();

                  

                   if(!input.isEmpty())//判断n是否符合要求

                   {

                             int [] array=new int[input.length()];

                             for(int i=0;i<input.length();i++)//将字符串中的每一个字符取出,赋给数组

                             {

                                      array[i]=input.charAt(i);

                             }

                             System.out.println("是回文数?"+ifHuiWen(array,0));

                   }

                   else System.out.println("输入的数不符合要求");

          }

          public boolean ifHuiWen(int[] a,int l)//递归法判断是否是回文数

          {

                   if(l==a.length/2)//执行到一定次数的时候还没有返回false,说明就是回文数了

                             return true;

                   if(a[l]==a[a.length-l-1])

                             return ifHuiWen(a,l+1);

                   else return false;

                  

          }

    }

    5.  结果截图

  • 相关阅读:
    第一节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
    Tensorflow 错误:Unknown command line flag 'f'
    Python 多线程总结
    Git 强制拉取覆盖本地所有文件
    Hive常用函数 傻瓜学习笔记 附完整示例
    Linux 删除指定大小(范围)的文件
    Python 操作 HBase —— Trift Trift2 Happybase 安装使用
    梯度消失 梯度爆炸 梯度偏置 梯度饱和 梯度死亡 文献收藏
    Embedding 文献收藏
    深度学习在CTR预估中的应用 文献收藏
  • 原文地址:https://www.cnblogs.com/w-honey/p/7661393.html
Copyright © 2011-2022 走看看