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、B、C三座塔,将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移动到C,以A为辅助塔将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+" 不是回文");

}

}

四、结果

Java课程作业02的更多相关文章

  1. JAVA自学作业02

    JAVA自学作业02 1.什么是标识符?由哪些部分组成?常见的命名规则有哪些? 标识符是用户为变量的内存空间所定义的字符序列: 可以由字母.下划线.美元符号以及数字组成,但数字不可作为首字符.标识符不 ...

  2. 课程作业02(关于Java的几点讨论)

    ---恢复内容开始--- 1.一个Java类文件中真的只能有一个公有类吗? public class Test { public static void main(String[] args) { } ...

  3. java语言基础第二讲 课程作业02 总结

    一.编程的好习惯 1.注释习惯.单行注释://,  多行注释:/*   */ . 2.程序中添加适当的空白:4个空格. 3.文件名必须与公有类名一致,即public class 类名. 4.java中 ...

  4. Java课程作业1

    模仿JavaAppArguments.java实例,编写一个程序,此程序从命令行接受多个数字,求和之后输出. 设计思想:命令行参数都是字符串,必须将其转化成数字才能相加,定义一个数组接收字符串转化的数 ...

  5. java课程作业--动手动脑

    随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...

  6. Java课程作业之动手动脑(六)

    1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. import java.io.IOException; import java.nio.file ...

  7. Java课程作业之动手动脑(五)

    1.请阅读并运行AboutException.java示例. import javax.swing.*; class AboutException { public static void main( ...

  8. Java课程作业之动手动脑(四)

    1.继承条件下的构造方法调用 class Grandparent { public Grandparent() { System.out.println("GrandParent Creat ...

  9. Java课程作业之动手动脑(三)

    1.以下代码为何无法通过编译?哪儿出错了? 在Foo类中已经有了一个Foo的含参构造方法,所以在定义Foo类对象时不能使用new Foo()方法.在Foo类中再写一个无参构造方法,就能编译了. 如果类 ...

随机推荐

  1. [VBA]斐波那契数列

    Sub 斐波那契()Dim arrFor i = 3 To 100Cells(1, 1) = 0Cells(2, 1) = 1Cells(i, 1) = Cells(i - 1, 1) + Cells ...

  2. kafka 通信报文格式

    1. 序列化一条消息 消息有 key 和 value kafka 提供了基础数据类型的序列化工具,对于业务的自定义类需要自行实现序列化 ProducerRecord 是对象,含 KV 和 header ...

  3. Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem

    Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...

  4. 前端 CSS 继承性和层叠性

    CSS有两大特性:继承性和层叠性 前端 CSS的继承性 前端 CSS层叠性 CSS选择器优先级 前端 CSS 优先级 样式设置important

  5. Bean的构造器注入和setter注入

    链接:https://pan.baidu.com/s/1vixLrr8harzZMwLsIB1Mwg 提取码:ou1n 首先要明白,为什么要注入? IOC容器会在初始化时,创建好所有的bean对象的实 ...

  6. Hive调优参数配置

    Hive进行大数据处理的过程中经常遇到一个任务跑几个小时或者内存溢出等问题,平时会任务执行的遇到的问题 进行参数的调整配置,收集整理的配置参考如下: set dfs.namenode.handler. ...

  7. java常用类详细介绍及总结:字符串相关类、日期时间API、比较器接口、System、Math、BigInteger与BigDecimal

    一.字符串相关的类 1.String及常用方法 1.1 String的特性 String:字符串,使用一对""引起来表示. String声明为final的,不可被继承 String ...

  8. 又是图论.jpg

    BZOJ 2200 道路和航线重讲ww: FJ 正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到 T 个城镇 (1 ≤ T ≤ 25000),编号为 1 到 T.这些城镇之间通过 R 条 ...

  9. media查询(来源于bootstrap)

    /* 大屏幕 */@media (min-width: 1200px) { ... } /* 平板电脑和小屏电脑之间的分辨率 */@media (min-width: 768px) and (max- ...

  10. ThinkPHP5 支付宝支付扩展库(超级简单,超级好用!)

    ThinkPHP5 支付宝支付扩展库, 一个静态方法的调用就可以实现,包括手机网站支付.电脑网站支付.支付查询.退款.退款查询.对账单所有功能,而且是2017年7月20日最新版~我的想法是,调用一个静 ...