|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 海绵爱上星 于 2018-7-29 16:14 编辑
#include <stdio.h>
#include <math.h>
void main()
{
int n;
char A,B,C;
void hannota(int n,char,char,char);
printf("请输入汉诺塔的层数n:\n");
scanf("%d",&n);
hannota(n,'a','b','c');
}
void hannota(n,A,B,C)
{
void move(char,char);
if (1 == n)
{
move(A,C);
}
else
{
hannota(n-1,A,C,B);
move(A,C);
hannota(n-1,B,A,C);
}
}
void move(char x,char y)
{
printf("%c --> %c\n",x,y);
}
为什么我的代码跑出来相对小甲鱼的多了前面4行;
跑出来如下:
本帖最后由 claws0n 于 2018-7-29 16:51 编辑
您输入的 n 是多少?貌似 5
您的代码有小问题且不可阅读,请适当用空格
不需要 #include <math.h>
函数的声明放在 main() 之前,不要放在 main() 内部或函数内部
稍微整理您的代码
- #include <stdio.h>
- void hannota(int, char, char, char);
- void move(char, char);
- void main()
- {
- int n;
- char A,B,C;
-
- printf("请输入汉诺塔的层数n:\n");
- scanf("%d", &n);
- hannota(n,'a','b','c');
-
- }
- void hannota(int n, char A, char B, char C)
- {
- if (1 == n)
- {
- move(A, C);
- }
- else
- {
- hannota(n - 1, A, C, B);
- move(A, C);
- hannota(n - 1, B, A, C);
- }
- }
- void move(char x,char y)
- {
-
- printf("%c --> %c\n", x, y);
- }
复制代码
|
-
|