上课时韩顺平老师讲的不是很理解,自己用自身方法想了一下
public class hello1 {
public static void main(String[] args) {
Han(2,'A','B','C');
}
public static void Han(int num , char a , char b , char c){
if (num == 1 ) System.out.println(a +"->"+c);
else {
Han(num-1,a , c , b);
System.out.println(a +"->"+c);
Han(num-1,b,a,c);
}
}
}
其实就是三个柱子,每次都想象成最下面一块和最上面的一块(num-1)。需要先把上面的一块移到辅助的柱子上,然后再把最下面的一块移到目标柱子上,最后再将辅助的柱子上的一块移到目标柱子上。
在递归算法中,形参中的a就是起始堆积的柱子,b就是辅助的柱子,c就是目标的柱子。
在else模块中,先将上面的模块(num-1)移到b柱子上,然后将下面的块放到c柱子上,最后再将上面的块(num-1)从b柱子移到c柱子上。对应else中的三句话。 因为最下面一块只有1块,所以只需要输出语句就够。