首先我们来看一下汉诺塔的解决方法。
设
start
为起始柱,
temp
为中间柱,
end
为目的
柱,起始盘子数为
n
块。我们的思路是:
1
》首先把
n-1
块从
start
移到
temp
2
》然后把第
n
块从
start
移到
end
3
》最后把
temp
的
n-1
块移到
end
然后运用递归的思想细分
1,3
步直到出现
n=1
的情况
N=1
时直接从起始柱移到目的柱,算法结束。图
1
给出了
n=3
时候的运算过程。
以下是在
c++
语言上的程序实现:
Void Hanoi(int n,char s,char e,char t){ //
盘子数,起始,目的,中间
If(n==1) cout << s <<
“
”
<< e <<endl;//n=1
情况
Else{Hanoi(n-1,s,t,e); //
把
n-1
块从
start
移到
temp
Cout << s <<
“
”
<< e <<endl; //
然后把第
n
块从
start
移到
end
Hanoi(n-1,t,s,e); //
最后把
temp
的
n-1
块移到
end