zoukankan      html  css  js  c++  java
  • 10.14作业

    1. 1.使用递归方式判断某个字串是否是回文

    (1)设计思想:回文就是正着读和反着读都是一样的,要判断一个字符串是否回文,先要把字符串分解成每个字符,如果只有一个字符,可以简单的判定;当字符个数超过一个的时候,就要进行比较,第一个和最后一个比较,这里定义一个整数,用来记录,开头的加一,末尾的减一,比较两个字符串是否相同,这就是递归函数了;

    (2)程序流程图:

    (3)程序源代码:

    import java.util.Scanner;

    public class Huiwen

        {

    public static boolean haha(String str,int start,int end)

       {   

      if(start==end)  

       {

       return true;

       }

       else{

       if(str.charAt(start)!=str.charAt(end))

          {

       return false;

          }  

       if(str.charAt(start)==str.charAt(end))

       {

       return true;

       }

      return haha( str,start+1, end-1);

     }

       }

        

    public static void main(String[] args)

    {

    // TODO 自动生成的方法存根

    Scanner input= new Scanner(System.in);

    String s;

    s=input.next();

    int start=0,end=s.length();

    if( haha(s, 0, s.length()-1))

    {

    System.out.println("是");

    }

    else

    System.out.println("不是");

    }}

    (4)验证截图:

    1. 2.汉诺塔问题

    (1) 设计思想:

     首先有三根柱子,可以认定为abc,要求是盘子必须是由上到下,由小到大串起来,并且每次移动只能移动一个盘子,而且是小盘子。要移动最下面的大盘子,就要先把上面的所有盘子移动;我们可以认为a为原柱,b为过渡柱,c为目标柱;如果只有一个盘子,可以直接从原柱移动到目标柱;如果有两个盘子,就要先移动小盘子,先将小盘子移动到b柱子,然后将大盘子移动到c柱子,然后将小盘子移动到c柱子,当有三个及以上的盘子的时候,可以由大到小定义为1234....因为最大的必须要在c的最下面,要把上面所有盘子先移到b,然后把最后一个盘子移动到c,然后把b柱子上的盘子再移动到c,此时原柱子就变为b,而a就变为过渡柱子,c就是目标柱子;这里要设置两个参数,一个函数用来移动当前最大的盘子,直接从ac,并且输出从哪移动到哪儿;第二个函数要有四个参数,一个整型,用来传递盘子个数,三个char类型,用来传递柱子的名字;首先判断是否为n,也就是盘子的数量,是否为一。

    (2)程序流程图:

    (3)程序代码:

    import java.util.Scanner;

    public class Hannuota {

         public static void six(char q, char w)

         {

          System.out.println(q+"----->"+w);//????????????输出传递的参数

         }

         public static void niu(int n,char a,char b,char c)

         {

          if(n==1)

          {

          six(a,c);

          }

          else 

          {

          niu( n-1, a, c, b);

          six(a,c);

          niu( n-1, b, a, c);

          }

          

         }

    public static void main(String[] args)

    {

    Scanner input = new Scanner(System.in);

    int num;

    System.out.println("请输入要移动盘子的数量");

    num=input.nextInt();

    niu( num,'A', 'B','C');

    }

    }

    (4)验证截图:

    1. 1使用n的阶乘计算组合数

    (1)设计思想:主要就是求n的阶乘,然后再根据公式看看需要几个变量,对变量进行赋值。

    (2)程序代码:

    import java.util.Scanner;

    public class Cnjisuan {

    public static int fact (int n)

    {

    if (n==1)

    {

    return 1;

    }

    else

    {

    return n*fact(n-1);

    }

    }

    public static void main(String[] args)

    {

    Scanner input=new Scanner(System.in);

    int n,k,a,b,c,d;

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

    n=input.nextInt();

    k=input.nextInt();

    a=fact(n);

    b=fact(k);

    c=fact(n-k);

    d=a/(b*c);

    System.out.println("最后的结果是:"+d);

    }

    }

    (3)验证截图:

    3.2.使用递推的方法用杨辉三角计算:

    (1)设计思想:也是求阶乘,例如,求5的阶乘,要先算1*2,然后把1*2的结果再乘以3;然后再把1*2*3的结果乘以4,每次×的数字都比上一次×的数字大一,这里可以用一个for循环,用I1开始记录;设置一个变量,保存上一次相乘得到的结果,然后再用这个变量乘以i,此时的i会比上一次的i大一。这个程序主要是利用递推法求阶乘,其余的算法和上面一个相同。

    (2)程序代码:

    import java.util.Scanner;

    public class Ditui {

    public static int fact (int n)

    {    int a,b,c=1;

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

    {

    b=i;

    a=b;

    c=c*b;

    }

    return c;

    }

    public static void main(String[] args)

    {

    // TODO 自动生成的方法存根

              Scanner input= new Scanner(System.in);

                 int a,b;

                 System.out.println("你要求几的阶乘");

                 a=  input.nextInt();   

                 b=fact(a);

                 System.out.println(b);

    }

    (3)验证截图:

  • 相关阅读:
    php 下设置cookie问题
    js 页面无滚动条添加滚轮事件
    Python中关于字符串的问题
    Python 字符串相加问题
    ajax 同步和异步
    重叠div鼠标经过事件
    Myeclipse中将项目上传到码云
    eclipse debug的时候提示debug Edit Source Lookup path
    阿里云+wordpress搭建个人博客网站
    centos7 安装mysql
  • 原文地址:https://www.cnblogs.com/yyh-678/p/7662948.html
Copyright © 2011-2022 走看看