递归:自己调用自己
理解容易,用法自己要活用
递归基础
package com.bjsxt.queue;
//递归
public class TestRecursive {
public static void main(String[] args){
print(3);
}
public static void print(int i){
if(i>0){
System.out.println(i);
print(i-1);
}
}
}
递归应用(//斐波那契数列: 1 1 2 3 5 8 13)
package com.bjsxt.queue;
public class TesrFebonacci {
public static void main(String[] args){
//斐波那契数列: 1 1 2 3 5 8 13
int i = febonacci(5);
System.out.println(i);
}
//打印第几课项斐波那契数列
public static int febonacci(int i){
if(i==1 || i==2){
return 1;
}else{
return febonacci(i-1)+febonacci(i-2);
}
}
}
汉诺塔问题用递归方法来解
package com.bjsxt.queue;
/**
-
汉诺塔问题用递归方法来解
*/
public class TestHanoi {
public static void main(String[] args){
hanai(3,‘A’,‘B’,‘C’);
}/**
*- @param n 共有N个盘子
- @param from 开始的柱子
- @param in 中间的柱子
- @param to 目标柱子
- 无论有多少个盘子,都认为只有一个盘子,上面的所有盘子和最下面一个盘子
*/
public static void hanai(int n ,char from,char in ,char to ){
//只有一个盘子
if(n==1){
System.out.println(“从第一个盘子从” + from +“移到”+to);
//无论有多少个盘子,都认为只有一个盘子,上面的所有盘子和最下面一个盘子。
}else{
//移动上面所有的盘子
hanai(n-1,from,to,in);
//移动下面的盘子
System.out.println(“第”+n+“个盘子从”+from+“移动”+to);
//把上面的所有盘子从中间位置移到目标位置
hanai(n-1,in,from,to);
}
}
}