1. 递归
递归(Recursion):在函数的定义中使用函数自身的方法。
1.1 算法思想
递归的基本思想是把规模大的问题拆解为规模小的,相同的子问题来解决(递推公式)。并且解决问题的函数必须有明确的结束条件(终止条件)。其数学模型是归纳法。
1.2 案例
1) 汉诺塔
大梵天做了三根金刚石柱子,在一根柱子上从小到大摞着64片黄金圆盘。它命令婆罗门把圆盘按原有顺序摆放到另一根柱子上,要求每次只能移动一个盘子,且小盘上不能放大盘。
// 递推公式:
// 终止条件:
public static void main(String[] args){
String x = "x";
String y = "y";
String z = "z";
hanio(3, x, y, z);
}
public static void hanio(int n; String x; Sting y; String z){
if (n < 1){
System.out.println("层数小于1")
} else if (n == 1) {
System.ou.println("移动:" + x + "->" + z);
return;
} else {
hanio(n-1, x, z, y);
System.out.println("移动:" + x + "->" + z);
hanio(n-1, y, x, z);
}
}
2) 斐波那切数列
递推公式:
终止条件: