1.什么是递归算法

递归算法就是直接或间接调用自己的算法

2.问题1:一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少?使用递归实现

 public class FibonacciSequence {
public static void main(String[] args){
System.out.println(Fribonacci(9)); }
public static int Fribonacci(int n){
if(n<=2)
return 1;
else
return Fribonacci(n-1)+Fribonacci(n-2); }
}

3.问题2:汉诺塔问题

汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。

开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一 个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上 面。计算结果非常恐怖(移动圆片的次数)18446744073709551615,众僧们即便是耗尽毕生精力也不可能完成金片的移动了。

要求:输入一个正整数n,表示有n个盘片在第一根柱子上。输出操作序列,格式为“移动 t从 x 到 y”。每个操作一行,表示把x柱子上的编号为t的盘片挪到柱子y上。柱子编号为A,B,C,你要用最少的操作把所有的盘子从A柱子上转移到C柱子上。

 public class Hanio {
public static void main(String[] args){
int i=3;
char a ='A',b='B',c='C';
hanio(i,a,b,c);
}
public static void hanio(int n,char a,char b,char c){
if(n==1)
System.out.println("移动"+n+"号盘子从"+a+"到"+c);
else{
hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c
System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c
hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c
}
}
}

JAVA递归算法的更多相关文章

  1. Java 递归算法

    其基本思路是递归算法设计:对于一个复杂的问题,原问题分为几个子问题相似相对简单.继续下去,直到孩子可以简单地解决问题,这是导出复发,因此,有复发的原始问题已经解决. 关键是要抓住: (1)递归出口 ( ...

  2. java递归算法提前返回值带出

    /** * */ package testJava.java.foreach; import java.util.ArrayList; import java.util.LinkedList; imp ...

  3. Java递归算法——三角数字(消除递归)

    import java.io.*; // for I/O //类名:Params //属性: //方法: class Params //这个类的对象被压入栈中 { public int n; //用来 ...

  4. 转: JAVA递归算法实例小结

    一.递归算法设计的基本思想是: 对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 在做递归算法的时候 ...

  5. Java递归算法——二分查找

    import java.lang.reflect.Array; import java.nio.Buffer; import java.util.Arrays; import java.util.Ra ...

  6. Java递归算法——变位字

    轮换的含义 1.c ats --> 2.ca st 3.c tsa --> 4.ct as 5.c sat --> 6.cs ta 7. atsc import java.io.Bu ...

  7. Java递归算法——阶乘

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  8. Java递归算法——三角数字

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  9. Java 递归算法,遍历文件夹下的所有文件。

    用递归算法遍历文件下的所有子文件夹和子文件 文件夹遍历方法 public void getFileList(String strPath){ File f=new File(strPath); try ...

随机推荐

  1. dwz的form表单中url的变量替换

    form表单中action的地址格式 “__URL__/edit/{xxx}”,大括号内的 “xxx” 就是变量名,主要功能是结合table组件一起使用. 下图中的删除.编辑.修改密码都是用了url变 ...

  2. 真机测试INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法

    来源:http://blog.csdn.net/aikongmeng/article/details/9793809 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法 ...

  3. Java学习随笔2:Java复合赋值表达式的小问题

    问题:i += j只是i = i + j的简写么? 答案:非也!看下面的程序: int i = 5; long j = 8; i += j; // 可以通过编译且结果正确 i = i + j; // ...

  4. 【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑好我们就开始:1.填写好我们的URL和Token[此处是已经通过验证的] ...

  5. strcmp函数的使用

    Action() { /*********************************   * Author:旺仔   * object:strcmp   * date:2015-12-09    ...

  6. Intel CPU MMX SSE SSE2/3/4指令集手册下载URL

    在线查看的网址: https://software.intel.com/sites/landingpage/IntrinsicsGuide/ Intel® 64 and IA-32 Architect ...

  7. JQuery学习之语法

    1.JQuery语法就是通过选取HTML元素,并对选取的元素执行某些操作: 基础语法:$(selector).action() (1)美元符号定义jQuery (2)选择符(selector)查询和查 ...

  8. c#中ref和out 关键字

    问题:为什么c#中要有ref和out?(而java中没有)需求假设:现需要通过一个叫Swap的方法交换a,b两个变量的值.交换前a=1,b=2,断言:交换后a=2,b=1. 现编码如下: class ...

  9. 将MapReduce的结果输出至Mysql数据库

    package com.sun.mysql;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException; ...

  10. HTML5 postMessage 和 onmessage API 详细应用

    随着 HTML5 的发展,了解并熟悉 HTML5 的 API 接口是非常重要的.postMessage(send) 和 onmessage 此组 API 在 HTML5 中有着广泛的应用,比如 Web ...