用函数计算Hanoi塔步骤:
# include <stdio.h>
#include <stdlib.h>
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;
}
}