java作业 2017.10.14
课后作业一
1.设计思想:
(1)通过组合数公式计算:分别输入中的n和k的值。定义一个计算n!的方法,然后调用方法分别计算出n!,k!,(n-k)!,然后通过公式=n!/(k!*(n-k)!)算出的值。
(2)通过杨辉三角计算:分别输入中的n和k的值。定义一个递归的函数public int C(int n,int k),int c.当n==k时c=1,当n!=1&&k==1时,c=n;
此外调用自身函数c=C(n-1,k)+C(n-1,k-1)。
2.程序流程图:
(1)

(2)

3.程序源代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Homework1
{
public static void main(String args[])
{
Scanner input=new Scanner(System.in);
int n,k,c;
B b=new B();
System.out.println("使用组合数公式的方法:");
System.out.println("输入n值:");
n=input.nextInt();
System.out.println("输入k值:");
k=input.nextInt();
System.out.println("结果:"+"C "+ n+"取"+k+"的值为:"+b.C1(n,k));
System.out.println();
System.out.println("使用杨辉三角方法的方法:");
System.out.println("输入n值:");
n=input.nextInt();
System.out.println("输入k值:");
k=input.nextInt();
System.out.println("结果:"+"C "+ n+"取"+k+"的值为:"+b.C2(n,k));
}
}
class B
{
public BigInteger C1(int n,int k)
{
BigInteger c;
if(n==k)
c= BigInteger.ONE;
else if(n!=1&&k==1)
c= BigInteger.valueOf(n);
else
c= C1(n-1,k-1).add(C1(n-1,k));
return c;
}
public BigInteger getFactorial(int n) {
if(n==1 || n==0)
{
return BigInteger.valueOf(1);
}
return BigInteger.valueOf(n).multiply(getFactorial((n-1)));
}
public BigInteger C2(int n,int k)
{
return getFactorial(n).divide((getFactorial(k).multiply(getFactorial(n-k)))) ;
}
}
4.结果截图:

课后作业二
1.设计思想:
输入盘子的个数n,定义一个显示盘子移动的方法move,一个计算汉诺塔的方法hanoi,将move在hanoi里调用。Hanoi的大致算法:将one座上的n-1个盘子(借助three座)移动到two塔,改变one ,two ,three 与peg1,peg2 ,peg3的对应关系即可,递归结束条件n=1.
2.程序流程图:

3.程序源代码:
import java.util.Scanner;
public class Homework2
{
public static void main(String args[])
{
Scanner input=new Scanner(System.in);
int n;
System.out.println("输入盘子的个数:");
n=input.nextInt();
Hanoi h=new Hanoi();
System.out.println("移动过程为:");
h.hanoi(n, "peg1", "peg2","peg3");
}
}
class Hanoi
{
public void move(String x,String y)
{
System.out.println(x+"-->"+y);
}
public void hanoi(int n,String one,String two,String three)
{
if(n==1)
move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
}
4结果截图:

课后作业三
1.设计思想:
输入一段字符串,定义一个AboutStringPalindrome类,三个私有属性int n,int length,String str,n用来控制递归结束的条件,length为字符串的长度。定义构造函数初始化私有属性。定义boolean类型的judgePalindrome方法用来判断,定义showJudgePalindrome来输出结果。
2.程序流程图:

3.程序源代码:
import java.util.Scanner;
public class Homework3
{
public static void main(String args[])
{
Scanner input=new Scanner(System.in);
System.out.println("输入一个字符串:");
String str=input.nextLine();
AboutSringPalindrome a=new AboutSringPalindrome(str);
System.out.println();
System.out.print("判断结果:");
a.showJudgePalindrome();
}
}
class AboutSringPalindrome
{
private int n;
private int length;
private String str;
public AboutSringPalindrome(String str2)
{
this.n=1;
this.length=str2.length();
this.str=str2;
}
public Boolean judgePalindrome(String str,int n,int length)
{
boolean flag;
if(str.charAt(n-1)==str.charAt(length-n))
flag=true;
else
flag=false;
if(n==length/2)
{
if(str.charAt(n-1)==str.charAt(length-n))
{
return true;
}
else
return false;
}
else
return flag&&judgePalindrome(str,n+1,length);
}
public void showJudgePalindrome()
{
if(length==0||length==1)
{
System.out.println("该字符串回文");
}
else
{
if(judgePalindrome(str, n, length))
System.out.println("该字符串回文");
else
System.out.println("该字符串不回文");
}
}
}
4结果截图:




java作业 2017.10.14的更多相关文章
- 2017.10.14 Java的流程控制语句switch&&随机点名器
今日内容介绍 1.流程控制语句switch 2.数组 3.随机点名器案例 ###01switch语句解构 * A:switch语句解构 * a:switch只能针对某个表达式的值作 ...
- java课后作业2017.10.20
动手动脑1: public class Test{ public static void main(String args[]) { Foo obj1=new Foo(); }}class Foo{ ...
- java作业 11.10
package text3; import java.io.File; import java.io.IOException; import java.nio.file.Files; public c ...
- 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...
- Week14《Java程序设计》第14次作业总结
Week14<Java程序设计>第14次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何 ...
- 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.
Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...
- 2017.10.12 Java的计数器的开发
//我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...
- 2017.10.10 java中的继承与多态(重载与重写的区别)
1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...
随机推荐
- 100 numpy exercises
100 numpy exercises A joint effort of the numpy community The goal is both to offer a quick referenc ...
- 【洛谷P1090】合并果子
合并果子 题目链接 贪心:每次先合并最小的两堆果子 用堆实现 #include<iostream> #include<cstdio> using namespace std; ...
- Kiwi,BDD行为测试框架--iOS攻城狮进阶必备技能
简介 Kiwi 是一个适用于iOS开发的行为驱动测试框架,旨在提供一个足够简单易用的BDD库. 项目主页: https://github.com/kiwi-bdd/Kiwi 示例下载: https:/ ...
- spring-开发需要jar包
需要的开发包 Spring核心开发包: Commons-logging.jar Spring-beans.jar Spring-context.jar Spring-core.jar Spring-e ...
- Java基础——对象和类
将包含main方法的类称为主类. 变量的作用域是指变量可以在程序中引用的范围. 实例变量和静态变量的作用域是整个类,无论变量是在哪里声明的. 局部变量的声明和使用都在一个方法的内部. 一个类的实例变量 ...
- Python的循环正确的操作使用方法详解
要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 6 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+10000,直接写表达式就 ...
- caioj:1093: 并查集2(scy的删边问题) C++
题目描述 [题目描述] 读入一个无向图(可能含有多个连通分支),输出最多能删掉多少条边,而不改变这个图任意两点的连通性(原来连通的两个点依然连通,不连通的依然不连通). [输入格式] 第一行为图的顶点 ...
- PAT (Basic Level) Practice 1023 组个最小数
个人练习 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...
- 排序-InsertSort
数据结构之插入排序 参考----王道论坛2015年数据结构联考复习指南---- 算法稳定性:如果待排序表中有任意两个元素x1,x2相等,且排序前x1在x2的前面,使用某个排序算法之后,若x1仍然在x2 ...
- python-9-IO编程
1-文件读写 f = open('d:/file.txt','r') #如果文件不存在会报异常 print(f.read()) #一次性读取所有内容 f.close() 1.2 由于文件操作会用异常, ...