zoukankan      html  css  js  c++  java
  • Java课程作业02

    01

    一、设计思想:

    第一种使用n!的公式直接计算,利用递归方法求n

    第二种使用递推的公式,利用递归返回求和。

    二、程序流程

    三、源代码

    import java.util.*;
    import javax.swing.JOptionPane;
    public class yanghuisanjiao {
    public static long fact(int k,int n){
    if(k==0||n==0)
    return 1;
    if(n<k)
    return 0;
    if(n==k)
    return 1;
    return fact(k-1,n-1)+fact(k,n-1);
    }
    public static long jiecheng(int i){
    if(i==1||i==0)
    return 1;
    else
    return i*jiecheng(i-1);

    }
    public static void main(String[] args){
    String n1,n2;
    int i,j;
    Scanner input=new Scanner(System.in);
    n1=JOptionPane.showInputDialog( "输入k的值:" );
    n2=JOptionPane.showInputDialog( "输入n的值:" );
    i= Integer.parseInt(n1);
    j= Integer.parseInt(n2);
    JOptionPane.showMessageDialog(
    null,"利用阶乘计算:" +jiecheng(j)/(jiecheng(i)*jiecheng(j-i)));
    JOptionPane.showMessageDialog(
    null,"利用杨辉三角计算:" +fact(i,j));
    }
    }

    四、结果

    02

    一、设计思想

    A、BC三座塔,将A上的圆盘全部移动到C上并且大的在下面。假如A上有n个圆盘,则需要以B为辅助塔,可以将n-1个圆盘移动到B,将第n个移动到C塔,然后以A为辅助塔,将n-1个圆盘移动到C上,依次递推。直到第1个圆盘移动到C上。利用递归方法,当圆盘个数>1时,对n-1个圆盘进行操作:C为辅助塔将A上面n-1个移动到B上去将最大的一个盘从A移动到CA为辅助塔将B上n-1个移动到C上去直到n=1结束。

    二、程序流程图

    三、源代码

    import java.util.Scanner;
    public class hannuota {

    /**
    * @param args
    */
    public static void hannuo(int n,char a,char b,char c){ //递归实现汉诺塔
    if(n==1){ //一个盘子可以直接移动
    hannuota.move(a,c);
    }
    else{ //对N-1个盘子进行操作
    hannuo(n-1,a,c,b); // 递归 以C为辅助塔将A上面n-1个移动到B上去
    hannuota.move(a,c); //将最大的一个盘从A移动到C
    hannuo(n-1,b,a,c); //递归 以A为辅助塔将B上n-1个移动到C上去
    }
    }
    //移动指向
    public static void move(char x,char y){
    System.out.println(x+"-->"+y);
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    char a='A',b='B',c='C';
    int n;
    Scanner input=new Scanner(System.in);
    System.out.println("请输入盘子的个数:");
    n=input.nextInt();
    System.out.println("移动步骤:");
    hannuota.hannuo(n,a,b,c);
    }
    }

    四、结果

    03、

    一、设计思想

    是否为回文,则需要判断首尾对应字符是否相同。当字符长度为0或1时为true。当长度大于1时,判断0和length-1处的字符是否相同,相同则进行首+1、尾-1返回此函数。如此重复。

    二、流程图

    三、源代码

    import java.util.*;
    public class palindrome {

    /**
    * @param args
    * @return
    */
    public static boolean ispalindrome(String a,int i,int j){
    if(a.length()==0||a.length()==1) //递归结束语句
    return true;
    if(i==j) //递归结束语句
    return true;
    else if(a.charAt(i)==a.charAt(j)) {
    return ispalindrome(a,i+1,j-1); //递归判断
    }
    else
    return false;
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s=""; //定义空字符串
    Scanner input=new Scanner(System.in);
    System.out.println("请输入字符:");
    s=input.next();
    int i=0;
    int j=s.length()-1;
    if(palindrome.ispalindrome(s,i,j))
    System.out.println(s+" 是回文");
    else
    System.out.println(s+" 不是回文");

    }

    }

    四、结果

  • 相关阅读:
    需求的有序化和方案的系统化
    产品 增长 口碑传播
    私域流量的价值 大悦城微信营销:14万微信会员哪来的
    产品创新阶段关口细则
    业务关键数据指标
    TOB 增长
    医美品零售门店分析
    数据赋能饮品轻食
    [已读]你不知道的JavaScript(上卷)
    [已读]移动web手册
  • 原文地址:https://www.cnblogs.com/liulala2017/p/7661102.html
Copyright © 2011-2022 走看看