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. 多线程15-ReaderWriterLockSlim

        ));         }         );                     rwl.EnterUpgradeableReadLock();                     ...

  2. 自己写一个Layout

    1 Layout是ViewGroup的子类 LinearLayout.FrameLayout都是ViewGroup的子类,自己写的Layout也是ViewGroup的子类. 2 步骤 第一,自己的La ...

  3. P1311选择客栈

    这是2011年提高组D1T2,是一个绿色的模拟题,不出所料,没写出代码来. 首先输入n个客栈的颜色和最低消费,然后根据“同颜色但不是一个客栈”以及“两个客栈之间必须有一个的最低消费<=p&quo ...

  4. docker下部署kafka集群(多个broker+多个zookeeper)

    网上关于kafka集群的搭建,基本是单个broker和单个zookeeper,测试研究的意义不大.于是折腾了下,终于把正宗的Kafka集群搭建出来了,在折腾中遇到了很多坑,后续有时间再专门整理份搭建问 ...

  5. UML类图(一)

    前言 最近在学习程杰老师的<大话设计模式>,觉得非常不错,就做了一些学习笔记和总结.如果对设计模式很感兴趣的,可以直接阅读书籍,相信会有更多的收获. 本人小菜一枚,如果理解的不对的还请多多 ...

  6. [LeetCode] 164. 最大间距

    题目链接 : https://leetcode-cn.com/problems/maximum-gap/ 题目描述: 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值. 如果数组元素个数 ...

  7. selenium 教程

    selenium 本身是一套web自动化测试工具,但其经常被用于爬虫,解决一些复杂爬虫的问题. selenium 用于爬虫时,相当于模拟人操作浏览器. 浏览器驱动 使用 selenium 需要先安装 ...

  8. 数塔 Medium

    Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...

  9. Building and booting Nexus 5 kernel

    1. Downloading toolchain and setup. git clone https://android.googlesource.com/platform/prebuilts/gc ...

  10. java 如何重写equal 和hashcode方法(最佳实践)

    先看完理解这篇:Java hashCode() 和 equals()的若干问题解答 实现高质量的equals方法的诀窍包括 使用==操作符检查“参数是否为这个对象的引用”: 使用instanceof操 ...