java汉诺塔递归算法

//规则:有A,B,C三个柱子,在A柱子上有n个圆盘从小到大摞起来,要求每次移动一个圆盘,最终将所有圆盘按照从小到大移动到C柱子上,每次大的不能压小的。

//思路:若f(n)->C,则f(n-1)->B,f(n-2)->C,f(n-3)->B,以此类推可以推出f(1)首先去哪个柱子。那么每当确定一个柱子那么下一个柱子位置也确定,加入f(1)->C,那么f(2)->B,这里注意所有的开始的圆盘都在A这个柱子上,若圆盘较多,将多个圆盘移到B上那么,此时他们的去向应该是A或C。见代码:

package hanoT;

public class hannoT {

	public void exchange(int n, char a, char b, char c){
		if(n == 1){
			System.out.println("The " + n + " from " + a + " to " + c);
		}else{
			exchange(n-1, a, c, b);
			System.out.println("The " + n + " from " + a + " to " + c);
			exchange(n-1, b, a, c);
		}
	}
	public static void main(String[] args) {
		int f = 3;
		hannoT t = new hannoT();
		t.exchange(f, 'a', 'b', 'c');
	}
}

猜你喜欢

转载自blog.csdn.net/small__snail__5/article/details/81067531