今天看了课本汉诺塔的程序,不明白,求大神解读
/* 汉诺塔.cpp */#include<stdio.h>
void Move(char A, char B);
void Hanio(int n, char A, char B,char C);
int main()
{
int n;
char A='a',B='b',C='c';
printf("请输入汉诺塔的阶数:");
scanf("%d", &n);
Hanio(n,A,B,C);
return 0;
}
void Move(char A,char B)
{
printf("%c-->%c\t",A,B);
return;
}
void Hanio(int n, char A,char B, char C)
{
if(n==1)
Move(A,C);
else
{
Hanio(n-1,A,C,B); //????????
Move(A,C);
Hanio(n-1,B,A,C); //?????????
}
return;
}
我自己按照程序推了一下第一步是a-->b;而程序运行时分为 层数为奇偶 的两种情况
奇数:第一步a-->c; 偶数:第一步a-->b;