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');
哪里出错了啊,急死了。。。
#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语言汉诺塔问题的主要内容,如果未能解决你的问题,请参考以下文章