c语言初学之-汉诺塔
本帖最后由 海绵爱上星 于 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);
}
没错呀,帮你整理了下代码。
#include <stdio.h>
void hannota(int, char, char, char);
void move(char, char);
int main()
{
int n;
char A, B, C;
printf("请输入汉诺塔的层数n:\n");
scanf("%d", &n);
hannota(n, 'x', 'y', 'z');
return 0;
}
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);
}
输出和python上的完全一样,有什么错? claws0n 发表于 2018-7-29 16:49
您输入的 n 是多少?貌似 5
您的代码有小问题且不可阅读,请适当用空格
打印出来不会多4行吗。。。 无符号整形 发表于 2018-7-29 16:54
没错呀,帮你整理了下代码。
一开始不是应该是x--->z,,但是跑出来是z--->y 海绵爱上星 发表于 2018-7-29 17:49
一开始不是应该是x--->z,,但是跑出来是z--->y
我这里一切正常,你可能没有看全,拉动一下滚动条试一试。
页:
[1]