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类中再写一个无参构造方法,就能编译了. 如果类 ...
随机推荐
- FreeBSD上安装Cassandra 3.10
哈哈,你居然点进来了,来吧,一起吐槽FreeBSD啊,装了一上午Cassandra 3.10都没有装成功, 终于,鄙人一条 shutdown -p now 结束了FreeBSD,默默打开了CentOS ...
- python 接口测试时,后端报错no String-argument constructor/factory method
解决方法: 1.先将字典转化为序列化的数据类型 data = {"pageNo":0,"pageSize":10,"shopId":15,& ...
- 宝塔面板修改用户名和密码报错:TypeError: cannot concatenate 'str' and 'NoneType' objects
[root@dapao~]# bt 14 正在执行(14)... ================================================================== ...
- docker nginx ssl
docker run -d -p 80:80 -p 443:443 -v $(pwd)/conf/conf.d:/etc/nginx/conf.d -v $(pwd)/cert:/etc/nginx/ ...
- 【Spring】---属性注入
一.Spring注入属性(有参构造和[set方法]) 注意:在Spring框架中只支持set方法.有参构造方法这两种方法. 使用有参数构造方法注入属性(用的不多,但需要知道): 实体类 package ...
- redis4支持内存碎片清理功能使用
最近看到redis4支持内存碎片清理了, 之前一直期待有这么一个功能, 因为之前遇到内存碎片的解决办法就是重启, 现在终于有了优雅的解决方案.\^o^/, 这个功能其实oranagra 在2017年1 ...
- charles抓包教程
百度搜索下载charles 默认安装即可完成 1.双击charles.exe启动,我的是4.2.7版本.最好下载原版的不要去破解中文,会有不兼容 1.搜索该软件许可证书并输入即可长期使用 2.设置代理 ...
- TCP/IP协议-1
转载资源,链接地址https://www.cnblogs.com/evablogs/p/6709707.html
- 使用Inception-v3进行图像分类
https://blog.csdn.net/sinat_27382047/article/details/80534234 https://www.jianshu.com/p/cc830a6ed54b ...
- JSP页面读取数据中的数据内容,出现乱码现象的解决方法
1.首先要确保JSP页面的编码已修改为“utf-8”的字符编码: 2.然后再在jsp页面上添加代码进行设置: 先用getBytes()方法读出数据,然后再new String()方法设置格式为“utf ...