要将n个盘子从a 通过b 移动到c
那么 就要先将 n-1个盘子从a通过c 移动到b
再将a最底下的盘子移动到 c
之后再将 n-1个盘子从b通过a移动到c
由此可得到 递归公式
hanoi(int n,char from,char denpend_on,char to):
{
//n:盘子数from:a,denpend_on:b,to:c
//此语句意义为 将n个盘子从from 通过 denpend_on移动到to
hanoi(n-1,from,to,denpend_on);
move(n,from,to);
hanoi(n-1,denpend_on,from,to);
//当n=1时递归结束,将1个盘子从from 通过denpend_on移动到to
}
变种http://www.cnblogs.com/nanke/archive/2011/09/08/2171165.html
变种http://blog.csdn.net/xujinsmile/article/details/8091738
原文:http://www.cnblogs.com/wwjyt/p/3736827.html