#include<stdio.h>
void Hanoi(int n,char A,char B,char C);
int main()
{
Hanoi( 3, 'A', 'B', 'C');
}
void Hanoi(int n,char A,char B,char C)
{
if(n==1)
{
printf("%c->%c\n",A,C); //就一个盘子时,直接A->C(A到C)
}
else
{
Hanoi(n-1,A,C,B);//把n-1个盘子由A到B,中间那个C理解成借助B
printf("%c->%c\n",A,C);//又剩下一个盘子,还是A->C(A到C)跟上面一样
Hanoi(n-1,B,A,C);
}
}
传递四个参数,盘子数量,柱子A,柱子B,柱子C。
把它们看成一个整体,就是比如说你要移动第n个盘子,你就把n-1跟它上面的都移到B柱子上,然后把n移到C上。
画着图看着程序注释去理解,很简单: