C语言 经典递归 《汉偌塔》
#include <stdio.h>void move(int n,char a,char b,char c)/*这里有n个盘子,
a,b,c三个柱子*/
{
if(n==1)/*盘子等于1时,盘子直接从a柱子移到c柱子,不
用借助辅助棒b*/
printf("第%d个盘子是从 %c --> %c 的\n",n,a,c);
else
{
move(n-1,a,c,b);/*想要把n盘子从a柱子移动到c柱子
先要把n-1个盘子从a-b-c后在把第n盘子从a移动到c*/
printf("第%d个盘子是从 %c --> %c 的\n",n,a,c);
move(n-1,b,a,c);/*n-1个盘子已经从a移动到b了,再
把n-1从b移到c上,c上已经有了第n个盘子了*/
}
}
void main()
{
int n;
printf("请输入n个个数字,以解决n阶汉偌塔问题\n");
scanf("%d",&n);
move(n,'A','B','C');