递归的玩法
递归的经典模型就是斐波那契数列和汉诺塔。具体的原理已经到处都是,我们直接从带代码开始看
斐波那契数列
public class Fibonacci {
public static int getNumber(int n) {
if(n == 1) {
return 0;
} else if(n == 2){
return 1;
} else {
return getNumber(n - 1) + getNumber(n - 2);
}
}
}
测试
public class TestFibonacci {
public static void main(String[] args) {
System.out.println(Fibonacci.getNumber(5));
}
}
汉诺塔:所有的盘子刚开始都放在塔座A上,要求将所有的盘子从A->C,一次只能移动一个盘子,任何盘子不能放在比自己小的盘子上
public class HanoiTower {
/**
* 移动盘子
* topN:移动的盘子数
* from:起始塔座
* inter:中间塔座
* to:目标塔座
*/
public static void doTower(int topN,char from,char inter,char to) {
if(topN == 1) {
System.out.println("盘子1,从"+ from + "塔座到" + to + "塔座");
} else {
doTower(topN - 1, from, to, inter);
System.out.println("盘子" + topN +",从" + from + "塔座到" + to + "塔座" );
doTower(topN - 1, inter, from, to);
}
}
}
测试
public class TestHanoiTower {
public static void main(String[] args) {
HanoiTower.doTower(5, 'A', 'B', 'C');
}
}