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. 配置Log4j(很详细)【转】

    来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记 ...

  2. 测开之路一百四十七:用WTForms实现编辑功能

    接上一篇的内容 把原先的数据库模型全部给默认值,后面form赋值的时候就不用传位置参数了 把视图逻辑修改一下 # 视图层from datetime import datetimefrom flask. ...

  3. 测开之路一百二十九:jinja2模板语法

    flask用的是jinja2模板,有自己特定的语法 形参: 在html里面留占位参数: {{ 参数名 }},后端传值时,参数名=参数值 <!DOCTYPE html><html la ...

  4. H5如何测试?

    它跟安卓APP与IOS APP有什么样的区别呢?★ 我们以往的APP是使用原生系统内核的,相当于直接在系统上操作,是我们传统意义上的软件,更加稳定 ★ H5的APP先得调用系统的浏览器内核,相当于是在 ...

  5. C—LINQ小结

    LINQ代表语言集成查询(Language-Integrated Query),它包括用于从数据源检索信息的一组功能.数据检索是许多程序的重要组成功能. 简介:System.Linq; var num ...

  6. is_selected()检查是否选中该元素

    is_selected()检查是否选中该元素,一般针对单选框,复选框,返回的结果是bool 值, 以百度登录页面为案例,来验证"下次自动登录"是否勾选,默认是勾选的,返回的结 果应 ...

  7. 【HBase】三、HBase和RDBMS的比较

      HBase作为一种NoSQL的数据库,和传统的类似于mysql这样的关系型数据库是有很大区别的,本文来对他们做一个对比分析,以便更加深入的了解HBase.   主要区别体现在以下六个方面:   1 ...

  8. 那些搜过很多遍的python基础知识

    一. DataFrame 相关 1 索引的使用(.loc[] .iloc[]) .loc用行列标签来选择数据..iloc 根据行数与列数索引. import pandas as pd data = p ...

  9. vue--》如何使用wacth监听对象的属性变化?

    在开发过程中,我们经常需要监听watch监听一个对象的变化,但是如何来实现     监听对象中属性的变化呢? 先回顾一下如何监听整个对象的变化,使用watch就行了 export default { ...

  10. Linux如何设置在当前目录下打开终端

    转:https://blog.csdn.net/iot_flower/article/details/71189816 1. sudo apt-get install nautilus-open-te ...