汉诺塔问题

用函数计算Hanoi塔步骤:

# include 
#include 
int main() {
 void step(int o, char x,char y,char z);
 long long int st(int a);
 int t;
 printf("输入座数:");
 scanf("%d", &t);
 step(t,'A','B','C');
 printf("一共%llu步\n", st(t));//64位整型
 system("pause");
 return 0;
}
void step(int s,char x,char y,char z) {
 void pt(char a, char b);
 if (s <= 0) printf("数据错误");
 else if (s == 1) {
 pt(x, z);
 }
 else {
 step(s - 1,x,z,y);
 pt(x, z);
 step(s - 1,y,x,z);
 }
}
void pt(char a, char b) {
 printf("%c-->%c\n", a, b);
}
long long int st(int a) {
 long long int c;
 if (a <= 0) { printf("error!"); }
 else {
 if (a == 1) return 1;
 else c = 2 * st(a - 1) + 1;
 return c;
 }
}

你可能感兴趣的:(汉诺塔问题)