递归算法设计就是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题,在逐步求解小问题后得到大问题的解。关键在于找出递归关系(方程)和递归终止(边界)条件。
递归关系必须是问题越来越简单,规模越来越小。递归边界条件就是所描述问题最简单的、可见的情况。
#include<stdio.h>
void hanoi(int n,char a,char b,char c)//上面的n个盘子从基座a移到b,c为辅助
{
if(n>0)
{
hanoi(n-1,a,c,b);
printf("Move dish %d from pile %c to pile %c\n",n,a,b);//移第n个盘子
hanoi(n-1,c,b,a);
}
}
int main()
{
int n;
scanf("%d",&n);
hanoi(n,'A','B','C');
return 0;
}