C语言汉诺塔问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言汉诺塔问题相关的知识,希望对你有一定的参考价值。

#include <stido.h>
void move(char x,char y)

printf("%c-->%c\n",x,y);

void han(int n,char first,char second,char third)

void move(char x, char y);
int n;
if(n==1)
move(first,third);
else

han(n-1,first,third,second);
move(first,third);
han(n-1,second,first,third);


void main()

void han(int n,char first,char second,char third);
int m;
scanf("%d",&m);
han(m,'A','B','C');


哪里出错了啊,急死了。。。

纯C环境下需要把变量的定义放到模块的最上方,不能先调用函数再定义变量之类的
#include<stdio.h> han函数中的 int n;去掉,n是函数参数传过来的值,不去掉会出现类似死循环的无限递归;
给个我写的汉诺塔:
#include<stdio.h>
int count=0;
struct queue
int num;
char from;
char dst;
Queue[1000];

void move(int n,char from,char ast,char dst)

if(n<=1) Queue[count].num=n;Queue[count].from=from;Queue[count].dst=dst;count++;
else

move(n-1,from,dst,ast);
Queue[count].num=n;Queue[count].from=from;Queue[count].dst=dst;count++;
move(n-1,ast,from,dst);


int main(void)

int n,i;
scanf("%d",&n);
if(n==0) return 0;
move(n,'A','B','C');
printf("%d\n",count);
for(i=0;i<count;i++)

printf("%d from %c to %c",Queue[i].num,Queue[i].from,Queue[i].dst);
if(i+1<count) printf("\n");

return 0;

输入是盘子数,输出是步数跟每一步的操作
参考技术A #include <stido.h>
是#include<>stdio.h
han函数体里的int n;去掉,已经声明过没必要再声明一次
参考技术B 嘿嘿!
你把stdio写成stido了。
han()中把int n;去掉。

以上是关于C语言汉诺塔问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言案例---汉诺(Hanoi)塔问题

汉诺塔问题解析(C语言)

汉诺塔问题解析(C语言)

C语言递归:汉诺塔问题和青蛙跳台阶问题

图解青蛙跳台阶和汉诺塔问题(C语言+Java语言实现)

C语言汉诺塔与青蛙跳台阶——递归的简单应用