利用阶乘公式来计算组合式:

程序设计思想:

根据公式来计算组合数的大小,从键盘输入n,k的值,设计一个计算阶乘的大小,如果输入的数a为1或0,则直接return 1,否则运用递归,计算a-1的阶乘,直到a为1时,递归结束。

程序流程图:

程序源代码:

public static voidmain(String args[]) {intn ,k,c;

Scanner in=newScanner(System.in);

System.out.print("输入从n个数中选k个数中n,k的值:");

n=in.nextInt();

k=in.nextInt();

System.out.println("结果为:");

c=jiecheng(n)/(jiecheng(k)*jiecheng(n-k));

System.out.println(c);

}

public static int jiecheng(int x)

{

int y=1;

if(x==1||x==0)

y=1;

else y=jiecheng(x-1)*x;

return y;

}

根据杨辉三角递推求组合数

程序设计思想:

根据杨辉三角的规律,得出杨辉三角的第n行的第m个的值等于该位置的元素的上一行的左右两个输的和,然后根据杨辉三角与组合数的关系即c(n,m)等于杨辉三角的第n+1的第m+1个元素的值,根据这个来写出组合数的值。

程序流程图:

程序源代码:

public static voidmain(String args[]) {

Scanner sc=newScanner(System.in);

System.out.print("输入N值:");int n=sc.nextInt();

System.out.print("输入K值:");int k=sc.nextInt();int[][] a=new int[n+1][n+1];for(int i=0;i

{for(int j=0;j<=i;j++) {if(j==0||j==i)

{

a[i][j]=1;

System.out.print(a[i][j]+" ");

}else{

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

System.out.print(a[i][j]);

System.out.print(" ");

}

}

System.out.println();

}if(n<2||k==1)

System.out.println("num=1");else System.out.println("num="+a[n][k-1]+"="+a[n-1][k-2]+"+"+a[n-1][k-1]);

}

运用公式计算组合数:

程序设计思想:

输入n,m,两个数(来组成要求出的组合数)(n>m),如果m=1,则输出结果n,如果m!=1,则进入递归,运用公式,直到进行到n-m=1的时候,结束递归,输出结果。

程序流程图

程序源代码:

public static voidmain(String args[]) {

Scanner sc=newScanner(System.in);

System.out.print("输入N值:");int n=sc.nextInt();

System.out.print("输入K值:");int k=sc.nextInt();

System.out.println("结果为:"+C(n,k));

}public static int C(int n,intk)

{if(n<0||k<0||n

}

用Java实现汉诺塔:

程序设计思想:

1.首先输入盘子的数量n,如果盘子的数量是1,则直接将编号为1的圆盘从A移到C,递归结束。

2.否则:

递归,将A上编号为1至n-1的圆盘移到B,C做辅助塔;

直接将编号为n的圆盘从A到C;

递归,将B上的编号为1至n-1的圆盘移到C,A做辅助塔。

程序流程图:

程序源代码:

public static voidmain(String[] args) {

@SuppressWarnings("resource")

Scanner sc=newScanner(System.in);intn;

System.out.println("Please enter the number of your dished(Hanoi Tower):");

n=sc.nextInt();

System.out.println("The number of the times you need to move the dishes is:"+newHanoiTower().hanoiTower(n));

HanoiTower HanoiTower= newHanoiTower();

HanoiTower.move(n,'A', 'B', 'C');

}public int hanoiTower(intn) {if(n==1) return 1;else return hanoiTower(n-1)*2+1;

}public void move(int n, char a, char b, charc) {if (n == 1)

System.out.println("盘 " + n + " 由 " + a + " 移至 " +c);else{

move(n- 1, a, c, b);

System.out.println("盘 " + n + " 由 " + a + " 移至 " +c);

move(n- 1, b, a, c);

}

}

随意输入一个任意大小的字符串,判断他是不是回文字符串。

程序设计思想:

从键盘随意输入一个字符串,并将其赋值给一个数组,然后用递归进行,若i=j,肯定是递归,否则从数组的首元素与尾元素进行比较,若相等,则进行i++与j--,不断向中间靠拢,直到达到判断条件 n>=len/2 ,中间若有一次不符合判断,直接跳出递归,结束进程,输出不是回文字符串。

程序设计流程图:

程序源代码:

public classhuiwen

{private static intlen;private static charp[];public static voidmain(String args[]){

Scanner sc=newScanner(System.in);

String str;

str=sc.nextLine();

len=str.length();

p=str.toCharArray();if(huiwen(0))

System.out.println(str+" is a palindrome!");else System.out.println(str+" is not a palindrome!");

}public static boolean huiwen(intn){if(n>=len/2)return true;if(p[n]==p[len-1-n])return huiwen(n+1);else return false;

}

}

java递推_【Java】递归递推的应用相关推荐

  1. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  2. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  3. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  4. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  5. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  6. java斗地主发牌_[Java源码]扑克牌——斗地主发牌实现

    --------------------------------------- --------------------------------------- ----------一个扑克牌核心和简单 ...

  7. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  8. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

  9. java 三点_[Java教程]三点运算符使用方法

    [Java教程]三点运算符使用方法 0 2017-10-13 03:01:05 先看一个es6规范下三点运算符的使用实例:let fun=function(a,...list){ console.lo ...

  10. java打包拆包_[Java] Java 打包成jar包 和 解压jar包

    解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...

最新文章

  1. C++中 public,protected, private 访问标号小结
  2. 这老哥把GPU当暖气用,省钱了!
  3. Vue Router路由嵌套
  4. sudo规则支持正则
  5. Oracle存储过程编译卡死的解决方法
  6. 需求文档可以不签字吗之三-一个实例
  7. boost::container模块实现抛出异常
  8. 开发板接传感器蜂鸣器不断_迅为IMX6ULL终结技开发板初体验
  9. P1020 [NOIP1999 普及组] 导弹拦截 Dilworth定理 + dp
  10. php session页面传值,PHP session在页面间传递的问题
  11. mysql 变量作表名查询_使用MySQL函数变量作为表名查询
  12. 从NetCore报错到MySql安全
  13. 使用 Strace 和 GDB 调试工具的乐趣
  14. Leetcode —— 1469. 寻找所有的独生节点(Python)
  15. hdu 1495非常可乐 BFS
  16. 一、JpaRepository 命名规范(摘)
  17. tensorflow+python flask进行手写识别_Flask发布模型2
  18. Maxwell 一款简单易上手的实时抓取Mysql数据的软件
  19. 参观一家买过十年货的淘宝店是怎样的体验?——新魔术8000生产基地探秘
  20. Revit二次开发——常规模型标记随构件旋转

热门文章

  1. 把DataTable转换为泛型ListT或是JSON
  2. VB 6.0使用api
  3. Wss3入门(2):设置匿名访问包括匿名阅读和匿名评论,修改评论的字段等。
  4. 网管学习日记-ACL
  5. 游戏筑基开发之结构体(数组、指针)、枚举、共用体、typdef(C语言)
  6. *C#(WPF)--矩阵拖动和矩阵动画(拖动展开,不足动画效果)
  7. 《CLR via C#》读书笔记(5)基元类型、引用类型和值类型
  8. GPS模块数据放入谷歌地图显示,不准
  9. apache 网页301重定向、自定义400/403/404/500错误页面
  10. 在vs2010中mfc,C++的一些小经验