实验2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验2相关的知识,希望对你有一定的参考价值。

一、 使用计算机计算组合数

  1、 设计思想:建立二维数组表示组合数,利用杨辉三角关系,用递推写出一个函数。

        2、 程序流程图

    技术分享

  3、程序源代码

    package zuheshu;
    import java.util.Scanner;
    public class Calculate
    {
       public static int c[][]=new int[100][100];
       public static void main(String[] args)
       {
          // TODO Auto-generated method stub
          System.out.println("请输入k,n");
          Scanner scanner1=new Scanner(System.in);      //组合数的上标
          int k=scanner1.nextInt();
          Scanner scanner2=new Scanner(System.in);      //组合数的下标
          int n=scanner2.nextInt();
          c[0][0]=1;                                         //初始化
          c[1][0]=1;
          c[1][1]=1;
          System.out.println("组合数的结果是:"+digui(n,k));
       }
       public static int digui(int n0,int k0)
       {
          if((k0==n0)||(k0==0))
          {
             return 1;
          } 
          c[n0][k0]=digui(n0-1,k0)+digui(n0-1,k0-1);
          return c[n0][k0];
        }
    }

    4、结果截图:技术分享

二、 递归编程解决汉诺塔问题

  1、 设计思想:关键在于设计函数,把整个转移,就需要把除最后一个转移到二号位,将最后一位转移到3号位,再将其余转到三号位,每一次都是如此

  2、 程序流程图:

      技术分享

  3、源程序代码:

    package hannuota; import java.util.*;

       public class Hnt

    {

       public static void main(String[] args)  

      {   // TODO Auto-generated method stub   

       @SuppressWarnings("resource")   

       Scanner sc=new Scanner(System.in);   

       int n;   

       System.out.println("Please enter the number of your dished(Hanoi Tower):");     //输入塔个数   

       n=sc.nextInt();   

       System.out.println("The number of the times you need to move the dishes is:"+new Hnt().hanoiTower(n));  

      }  

      public int hanoiTower(int n)  

      {   if(n==1)    

          return 1;   

         else return hanoiTower(n-1)*2+1;  

      }

    }

  4、结果截图:

技术分享

三、使用递归方式判断某个字符串是否是回文

  1、设计思想: 输入字符串后,放进数组,对称比对,有不一样的就不是

  2、程序流程图:

技术分享

   3、源程序代码:

    package digui;

    import java.util.Scanner;

    public class Huiwen

       {  private static int l;            //全局变量整型数据  

     private static char p[];          //全局变量数组  

     public static void main(String[] args)

        {   // TODO Auto-generated method stub   

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

       Scanner sc=new Scanner(System.in);   

       String str;   str=sc.nextLine();                    //输入字符串   

       l=str.length();                   //令l的值为数组长度   

       p=str.toCharArray();             //将字符串转换为相应数组,用于比较对应位置字符是否相等。

         //从字符数组第一个函数开始比较。因为第一个字符下标为0,所以以0为参数:   

       if(isPalindrome(0))                                     //判断    

       System.out.println(str+" is a palindrome!");   

       else System.out.println(str+" is not a palindrome!");

       }

        public static boolean isPalindrome(int n)   

       {    if(n>=l/2)       

          return true;             //该字串是回文    

        else if(p[n]==p[l-1-n])       

            return isPalindrome(n+1);    

          else return false;          //该字串不是回文

        }         

    }

  4、结果截图:

技术分享

 




























以上是关于实验2的主要内容,如果未能解决你的问题,请参考以下文章

大数据Hadoop实验报告

2018-2019-2 20175306实验五《网络编程与安全》实验报告

2017-2018-2 20165336 实验四《Android开发基础》实验报告

2017-2018-2 20165215 实验四《Android开发基础》实验报告

实验2

2018-2019-2 20175213实验三《敏捷开发与XP实践》实验报告