课后作业1

(1)使用组合数公式

1、程序设计思想

利用递归求n的阶乘,递归终止条件为:if(n==1||n==0) f=1;不终止则执行:f=n*fac(n-1);调用该方法分别求出n!、k!、(n-k)!,再利用组合数公式即可求出组合数。

2、流程图

3、源程序代码

import java.util.*;

public class Combination {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("从n个不同元素中取出k个元素,请分别输入n与k的值:");

int n,k,t;

Scanner input=new Scanner(System.in);

n=input.nextInt();

k=input.nextInt();

input.close();

t=c(n,k);

System.out.println("从"+n+"个不同元素中取出"+k+"个元素,组合数为:"+t);

}

public static int c(int n,int k)   //从n个不同元素中取出k个元素

{

int n1,k1,nk1,result;

n1=fac(n);

k1=fac(k);

nk1=fac(n-k);

result=n1/(k1*nk1);

return result;

}

public static int fac(int n)     //求n的阶乘

{

int f;

if(n==1||n==0)

f=1;

else f=n*fac(n-1);

return f;

}

}

4、截图

(2)使用递推的方法用杨辉三角计算

1、程序设计思想

先动态开辟一个足够大的二维数组,按杨辉三角中数的规律给该数组赋值,因为杨辉三角第n行第k列的元素为从n-1个不同元素中取k-1个元素的组合数,所以可根据该数组算出想求的组合数。

2、流程图

3、源程序代码

import java.util.*;

public class Combination {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("从n个不同元素中取出k个元素,请分别输入n与k的值:");

int n,k,t;

Scanner input=new Scanner(System.in);

n=input.nextInt();

k=input.nextInt();

input.close();

t=yangHui(n,k);

System.out.println("从"+n+"个不同元素中取出"+k+"个元素,组合数为:"+t);

}

public static int yangHui(int n,int k)      //求杨辉三角中第n行第k列的元素

{

int i,j;

int arr[][]=new int [100][];

for(i=0;i<arr.length;i++)

{arr[i]=new int [i+1];

arr[i][0]=1;

arr[i][i]=1;}

for(i=2;i<arr.length;i++)

{

for(j=1;j<arr[i].length-1;j++)

arr[i][j]=arr[i-1][j-1]+arr[i-1][j];

}

return arr[n][k];

}

}

4、截图

(3)使用递归的方法用组合数递推公式计算

1、程序设计思想

组合数的递推公式为c(n,k)=c(n-1,k-1)+c(n-1,k),创建一个使用递归方法的函数,递归终止条件为:if(n==0) return 1;else if(n==1) return i;else if(n==k) return 1;调用该函数即可求出组合数。

2、流程图

3、源程序代码

import java.util.Scanner;

public class Combination {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("从n个不同元素中取出k个元素,请分别输入n与k的值:");

int n,k,t;

Scanner input=new Scanner(System.in);

n=input.nextInt();

k=input.nextInt();

input.close();

t=c(n,k);

System.out.println("从"+n+"个不同元素中取出"+k+"个元素,组合数为:"+t);

}

public static int c(int n,int k)  //从n个不同元素中取出k个元素

{

if(k==0) return 1;

else if(n==1) return 1;

else if(n==k) return 1;

else return c(n-1,k-1)+c(n-1,k);

}

}

4、截图

课后作业2

递归编程解决汉诺塔问题。

1、程序设计思想

假设要从A移动n个盘子到B,运用递归的方法,只需先将n-1个盘子借助C从A移到B,再将剩下的一个盘子从A直接移到C,最后再将B上的n-1个盘子借助A从B移到C即可。递归终止条件为:if(number==1) move(one,three)。

2、流程图

3、源程序代码

import java.util.*;

public class HanLuo {

public static void main(String args[])

{

System.out.print("请输入盘子的数量:");

Scanner input=new Scanner(System.in);

int number=input.nextInt();

input.close();

hanluo(number,'A','B','C');

}

public static void hanluo(int number,char one,char two,char three)  //将number个盘子借助"two"从"one"移到"three"

{

if(number==1) move(one,three);

else {

hanluo(number-1,one,three,two);

move(one,three);

hanluo(number-1,two,one,three);

}

}

public static void move(char a,char b)

{

System.out.println(a+"->"+b);

}

}

4、截图

课后作业3

使用递归方式判断某个字符串是否是回文

1、程序设计思想

输入一个字符串str,int n=str.length(),再利用str.length-n与str.length()-str.length()+n-1分别求出该字符串的第一个以及最后一个字符,将其进行比较,递归终止条件为:if(s1==s2&&L1>(length()/2-1)&&L1<L2)  j=1; else if(s1!=s2&&L1>(length()/2-1)&&L1<L2) j=0;

2、流程图

3、源程序代码

import java.util.Scanner;

public class Palindrome {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("请输入字符串:");

String str;

int n;

Scanner input=new Scanner(System.in);

str=input.nextLine();

input.close();

n=str.length();

int j=judge(str,n);

if(j==1) System.out.println(str+"是回文字符串");

else System.out.println(str+"不是回文字符串");

}

public static int judge(String str,int n)

{

int j=0;

if(str==""||str==null)

j=0;

int l1,l2;

char s1,s2;        //用字符串的第一个字符与最后一个字符比较,第二个与倒数第二个比较,依此类推

l1=str.length()-n;

l2=str.length()-l1-1;

s1=str.charAt(l1);

s2=str.charAt(l2);

if(s1==s2&&l1>=(str.length()/2-1)&&l1<l2)   //比较到最中间的两个数是递归停止条件

j=1;

else  if(s1!=s2&&l1>=(str.length()/2-1)&&l1<l2)

j=0;

else j=judge(str,n-1);

return j;

}

}

4、截图

转载于:https://www.cnblogs.com/wyl814922595/p/7664076.html

方法---课程作业02相关推荐

  1. 课程作业02实验报告

    1.程序设计思路 定义两个函数,一个是移动的函数,一个是递归的函数,调用递归,直到就剩下一个函数. 2.流程设计图 3.源代码 package 作业02; import java.util.Scann ...

  2. 课程作业02——课程中的动手动脑问题

    1.为什么double类型的数值进行运算得不到"数学上精确"的结果? 结论:使用double类型的数值进行计算,其结果是不精确的. 原因:double类型的数值占用64bit,即6 ...

  3. Java课程作业02

    使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?"public class Class {public ...

  4. 机器学习与数据挖掘 课程作业 基于数据驱动的空调结霜程度检测方法研究

    机器学习与数据挖掘 课程作业 基于数据驱动的空调结霜程度检测方法研究 摘要: 在我国的夏热冬冷地区,由于没有集中供暖,在冬季使用空调制热进行供暖是一种很常见的方式,但该地区冬季空气相对湿度较高并且环境 ...

  5. 20162307张韵琪 预备作业02

    20162307张韵琪 预备作业02 你有什么技能比大多人(超过90%以上)更好 我比大多数人更好的技能就是我的舞蹈了.从我对我的童年有了记忆开始,我就已经在学习舞蹈了,舞蹈是我童年记忆里最不可缺失, ...

  6. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 2 Keras - Tutorial - Happy House

    吴恩达deeplearning.ai课程作业,自己写的答案. 补充说明: 1. 评论中总有人问为什么直接复制这些notebook运行不了?请不要直接复制粘贴,不可能运行通过的,这个只是notebook ...

  7. 计算机控制作业及答案,《微机系统与维护》课程作业及答案(二)

    中央广播电视大学计算机网络技术专业(专科) <微机系统与维护>课程作业(二) 第3章 微机组装技术 一.单项选择题 1. 为了避免人体静电损坏微机部件,在维修时可采用(  B)来释放静电. ...

  8. 8. 吴恩达机器学习课程-作业8-异常检测和推荐系统

    fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 8. ...

  9. 7. 吴恩达机器学习课程-作业7-Kmeans and PCA

    fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 7. ...

最新文章

  1. JVM-class文件完全解析-方法表集合
  2. Paper之BigGAN:ICLR 2019最新论文《LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(未完待续)
  3. android适配不同分辨率的手机
  4. 【SSL】java keytool工具操作java带的(JKS)证书库
  5. linux内核线程绑定到单个核,linux 将进程或者线程绑定到指定的cpu上
  6. 安卓学习UI组件-ViewFlipper-实现屏幕切换动画效果
  7. golang mysql scan_golang 实现 mysql 数据库备份
  8. LeetCode 116. Populating Next Right Pointers in Each Node
  9. 白色情人节为你身边的程序猿献上一份礼物!
  10. css3中skew与rotateX(),rotateY()的用法
  11. 北京的一場演出-私人行程
  12. Internet的组成部分
  13. [RO]ZYZ角的旋转矩阵及角度计算 ZYZ Angle
  14. OrCAD之Design Resources的文件导入新的.dsn文件后,旧的。dsn文件如何去除?
  15. 怎么进入修复计算机界面,开机进入启动修复界面不能启动win7电脑的修复办法...
  16. matlab 动态优化,基于Matlab的测控系统动态性能优化与仿真
  17. 使用BERT做中文文本相似度计算与文本分类
  18. 宇视摄像机密码忘记找回方式(详细找回步骤)
  19. 幼儿园案例经验迁移_2020年幼儿园中班教育笔记 生活经验的迁移
  20. L3-007 天梯地图

热门文章

  1. 一个完整的python项目源码-一个Python开源项目-腾讯哈勃沙箱源码剖析(上)
  2. python基本语法语句-python 语法基础篇 一
  3. python编程工具p-5款Python程序员高频使用开发工具推荐
  4. python可视化窗口编程-Python可视化界面编程入门
  5. python的工作方向-Python的就业的方向和前景
  6. python手机版iphone-python如何绘制iPhone手机图案?(代码示例)
  7. python调用shell命令-Python怎么运行shell脚本
  8. python英语单词-干货|3天教你掌握Python必备常用英语词汇
  9. python读音有道词典-利用python实现命令行有道词典的方法示例
  10. 大学python和vb哪个简单-vb和python哪个速度快