如何理解汉诺塔的递归

河内塔可以理解为一个移塔游戏,将一个N层的塔从一根柱子移到另一根柱子上。

2.这是汉诺塔(N,A,C),汉诺塔的递归原型——N层的塔从A列移到C列;每次都要回到这个原型,是递归完成!

& lt就像1-100 f(n)= f(n-1)+n的递归累加一样;此时f(n)是递归原型,它返回f (n-1)>:

3.中间需要一个B列。汉诺塔的原型写为Hunnuota (n,A,b,C)——N层的塔借助b柱从A柱移动到C柱,这一步应该可以理解。

4.递归需要一个出口,这是控制条件。当n=1时,只要把塔从A移到C,就是出口。

& lt如果n=2,需要移动两次,但是不能一下子完成,也不能出去>

5.n & gt在1,这一步是理解汉诺塔递归的关键,它必须形成n-1层移动到C列的形式,这一步分为三步:

A.N层不能一次移动,可以理解为先把A上面的n-1层移动到B列。

& lt汉诺塔(n-1,A,C,B)>-

b A列第n层的塔移到C,

然后C在B列上形成n-1层,并移动到C列-

& lt汉诺塔(n-1,B,A,C)此时已经形成了递归的原型,不同的只是中间使用的列不同>

递归完成