汉诺塔的递归问题
我理解的漢諾塔問題是這樣的,我們做比較少的盤的時候很簡單,多了以后就變的復雜了,這時候遞歸算法就體現了作用了。
步驟是這樣,第一步A桿上面的n-1個盤子,借助B桿移到C桿上
? ? ? ? ? ? ? ? ? ? ? 第二步是將A上剩余的一個移到B桿上
? ? ? ? ? ? ? ? ? ?? 第三步是將C桿上的n-1-1的盤子借助B桿移動到A桿上
? ? ? ? ? ? ? ? ? ? 第四步就是重復第一步的操作。
代碼如下:
? ? ? ? ? ?? main()
{
int n;
input(n);
hanoi(n,'A','B','C');
}
?
?
hanoi(int n,char a,char b,char c)
{
if((n>0)
{hanoi(n-1,a,c,b);
hanoi(n-1,c,b,a);
}
}
總結