方法作业

  1. 设计思路

建立组合数,递推,递归函数,在主函数中进行调用,

  1. 流程图

 

 

 

  1. 源代码

import java.util.Scanner;

 

public class Yanghui {

    public int Jiecheng(int i){ 

           if(i==1||i==0)

           {

                  return 1;

           }

           return i*Jiecheng(i-1);

          

    }

    public int Ditui(int i,int j)

    {

        int a[][]=new int[100][100];       

        a[0][0]=1;

        int result=1;                       

        for(int p=1;p<100;p++)

               for(int q=0;q<=p;q++)

               {  

                      if(q==0||p==q)          

                             {

                             a[p][q]=1;

                             }

                      else

                          a[p][q]=a[p-1][q-1]+a[p-1][q];   

                      if(p==i&&q==j)              

                             {

                             result=a[p][q];

                             break;

                             }

                     

               }

 

           return result;

    }

    public int Zuhe(int i,int j)

    {

           if(i==0||j<=1||i==j)

           {

                  return 1;

           }

           return Zuhe(i-1,j-1)+Zuhe(i-1,j);

    }

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              Yanghui y=new Yanghui();

              System.out.println("请输入组合数下标和行标");

              Scanner input=new Scanner(System.in);

              int hang=input.nextInt();                  

              int lie=input.nextInt();                  

              int fenzi,fenmu;

              fenzi=y.Jiecheng(hang);                  

              fenmu=y.Jiecheng(lie)*y.Jiecheng(hang-lie);     

              System.out.println("阶乘结果:"+fenzi/fenmu+" ");  

              System.out.println("递推计算结果:"+y.Ditui(hang, lie)+" ");

        System.out.println("递归计算结果:"+y.Zuhe(hang+1, lie+1)+" ");

       

 

              }

 

}

  1. 截图

 

 

  1. 设计思路

移动n个盘子经历(2~n-1)步,调用递归hanoi,终止条件为参数n的值是1,执行xày的操作,

  1. 流程图

 

 

 

  1. 源代码

 

import java.util.Scanner;

 

public class Hanoi {

  public void Hnt(int a,char one,char two,char three){ 

         if(a==1)

         move(one,three);

         else

         {

                Hnt(a-1,one,three,two);  

                move(one,three);

                Hnt(a-1,two,one,three);

         }

  }

  public void move(char x,char y){

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

  }

 

  public static void main(String[] args) {

         // TODO Auto-generated method stub

         Hanoi h=new Hanoi();

         Scanner input=new Scanner(System.in);

         System.out.print("请输入初始盘子数量:");

         int num=input.nextInt();

         h.Hnt(num,'1','2','3');

 

  }

 

}

  1. 截图

 

 

  1. 设计思路

输入字符先判断长度,符合在判断首字符和尾字符,在进行下一个字符的判断。

  1. 流程图

              

 

  1. 源代码

import java.util.Scanner;

 

public class Huiwen {

   public int Hui(String str,int length,int star,int stop){

          if(length==0||length==1)

          {

                 return 1;

          }

          if(str.charAt(star)!=str.charAt(stop))

          {

                 return 0;

          }

          else

                 {

                 return Hui(str,length-2,star+1,stop-1);

                 }

                

   }

 

   public static void main(String[] args) {

          // TODO Auto-generated method stub

          Scanner input=new Scanner(System.in);

          String s=input.nextLine();

          Huiwen hui=new Huiwen();

          int l=s.length();

          if(hui.Hui(s, l, 0, l-1)==1)

          {

                 System.out.println("是回文字符串");

          }

          else

                 System.out.println("不是回文字符串");

                

 

   }

 

}

  1. 截图

 

 

posted @ 2017-10-13 13:37  格式化。  阅读(122)  评论(0编辑  收藏  举报