F1003028

林思宇

1

》计算机是一个不折不扣的傻瓜,他只能做你让他做的事情。

2

》计算机这个傻瓜很勤奋,而有句话叫做“勤能补拙”,所以很多我们做不来的事他也可

以做(以超级麻烦的方式)。

此文档目的是实现在

Lc-3

上的汉诺塔算法。

汉诺塔算法

首先我们来看一下汉诺塔的解决方法。

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