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、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的更多相关文章
- JAVA自学作业02
JAVA自学作业02 1.什么是标识符?由哪些部分组成?常见的命名规则有哪些? 标识符是用户为变量的内存空间所定义的字符序列: 可以由字母.下划线.美元符号以及数字组成,但数字不可作为首字符.标识符不 ...
- 课程作业02(关于Java的几点讨论)
---恢复内容开始--- 1.一个Java类文件中真的只能有一个公有类吗? public class Test { public static void main(String[] args) { } ...
- java语言基础第二讲 课程作业02 总结
一.编程的好习惯 1.注释习惯.单行注释://, 多行注释:/* */ . 2.程序中添加适当的空白:4个空格. 3.文件名必须与公有类名一致,即public class 类名. 4.java中 ...
- Java课程作业1
模仿JavaAppArguments.java实例,编写一个程序,此程序从命令行接受多个数字,求和之后输出. 设计思想:命令行参数都是字符串,必须将其转化成数字才能相加,定义一个数组接收字符串转化的数 ...
- java课程作业--动手动脑
随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...
- Java课程作业之动手动脑(六)
1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. import java.io.IOException; import java.nio.file ...
- Java课程作业之动手动脑(五)
1.请阅读并运行AboutException.java示例. import javax.swing.*; class AboutException { public static void main( ...
- Java课程作业之动手动脑(四)
1.继承条件下的构造方法调用 class Grandparent { public Grandparent() { System.out.println("GrandParent Creat ...
- Java课程作业之动手动脑(三)
1.以下代码为何无法通过编译?哪儿出错了? 在Foo类中已经有了一个Foo的含参构造方法,所以在定义Foo类对象时不能使用new Foo()方法.在Foo类中再写一个无参构造方法,就能编译了. 如果类 ...
随机推荐
- 多线程15-ReaderWriterLockSlim
)); } ); rwl.EnterUpgradeableReadLock(); ...
- 自己写一个Layout
1 Layout是ViewGroup的子类 LinearLayout.FrameLayout都是ViewGroup的子类,自己写的Layout也是ViewGroup的子类. 2 步骤 第一,自己的La ...
- P1311选择客栈
这是2011年提高组D1T2,是一个绿色的模拟题,不出所料,没写出代码来. 首先输入n个客栈的颜色和最低消费,然后根据“同颜色但不是一个客栈”以及“两个客栈之间必须有一个的最低消费<=p&quo ...
- docker下部署kafka集群(多个broker+多个zookeeper)
网上关于kafka集群的搭建,基本是单个broker和单个zookeeper,测试研究的意义不大.于是折腾了下,终于把正宗的Kafka集群搭建出来了,在折腾中遇到了很多坑,后续有时间再专门整理份搭建问 ...
- UML类图(一)
前言 最近在学习程杰老师的<大话设计模式>,觉得非常不错,就做了一些学习笔记和总结.如果对设计模式很感兴趣的,可以直接阅读书籍,相信会有更多的收获. 本人小菜一枚,如果理解的不对的还请多多 ...
- [LeetCode] 164. 最大间距
题目链接 : https://leetcode-cn.com/problems/maximum-gap/ 题目描述: 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值. 如果数组元素个数 ...
- selenium 教程
selenium 本身是一套web自动化测试工具,但其经常被用于爬虫,解决一些复杂爬虫的问题. selenium 用于爬虫时,相当于模拟人操作浏览器. 浏览器驱动 使用 selenium 需要先安装 ...
- 数塔 Medium
Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...
- Building and booting Nexus 5 kernel
1. Downloading toolchain and setup. git clone https://android.googlesource.com/platform/prebuilts/gc ...
- java 如何重写equal 和hashcode方法(最佳实践)
先看完理解这篇:Java hashCode() 和 equals()的若干问题解答 实现高质量的equals方法的诀窍包括 使用==操作符检查“参数是否为这个对象的引用”: 使用instanceof操 ...