海绵爱上星 发表于 2018-7-29 16:07:16

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行;
跑出来如下:

海绵爱上星 发表于 2018-7-29 16:10:50

新手求助

claws0n 发表于 2018-7-29 16:49:23

本帖最后由 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);
}

无符号整形 发表于 2018-7-29 16:54:38

没错呀,帮你整理了下代码。

#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上的完全一样,有什么错?

海绵爱上星 发表于 2018-7-29 17:44:58

claws0n 发表于 2018-7-29 16:49
您输入的 n 是多少?貌似 5

您的代码有小问题且不可阅读,请适当用空格


打印出来不会多4行吗。。。

海绵爱上星 发表于 2018-7-29 17:49:08

无符号整形 发表于 2018-7-29 16:54
没错呀,帮你整理了下代码。




一开始不是应该是x--->z,,但是跑出来是z--->y

无符号整形 发表于 2018-7-29 18:03:58

海绵爱上星 发表于 2018-7-29 17:49
一开始不是应该是x--->z,,但是跑出来是z--->y

我这里一切正常,你可能没有看全,拉动一下滚动条试一试。
页: [1]
查看完整版本: c语言初学之-汉诺塔