#include<stdio.h>
void hanoii(char A,char B,char C,int n);
void main()
{
int a;
printf("please input the number of the hanoi:\n");
scanf("%d", &a);
hanoi('A','B','C',a);
}
void hanoii(char A,char B,char C,int n)
{
if(n == 1)
{
printf("from %c to %c\n",A,C);
}
else
{
hanoi(A,C,B,n-1);
printf("from %c to %c\n",A,C);
hanoii(B,A,C,n-1);
}
}
首先让我们来看一看 c语言的实现方法
我们可以把所有情况都看做一种情况 即看作两层汉诺塔。
首先我们来定义一个汉诺塔函数来处理汉诺塔 ,内部的形参为char A, char B, char C 分别代表三个柱子 int n 代表层数。
一、当塔只有一层的时候 我们便可以直接把盘子 从A移动到目标盘C 对应代码 if(n == 1) printf(“from %c to %c\n”,A,C);
二、否则都可以看作是两层塔
把函数名看作搬运工
则第一句表示 把第N-1座塔 <span style="white-space:pre"> </span>A->B
第二句表示 把第N座塔 A->C
最后一句 把第N-1座塔 <span style="white-space:pre"> </span>B->C