C语言编程(汉诺塔问题)

C语言编程(汉诺塔问题),第1张

move(n-1,x,z,y);——这句是调用函数,这个函数就是前面声明的:void move(int n,int x,int y,int z)

printf("%c-->%c",x,z);——这句是输出,%c 是指按CHAR型输出,"%c-->%c",就是输出两个CHAR型数据,中间用-->连接。而这两个CHAR的数据就是x和z。比如结果是:a-->c

move(n-1,y,x,z);——这句还是调用函数,这个函数就是前面声明的:void move(int n,int x,int y,int z)

#include<stdioh>

void move(char a,char b)

{

printf("%c->%c\n",a,b);

}

void f(int n,char a,char b,char c)

{

if(n==1) move(a,c);

else

{

f(n-1,a,c,b);

move(a,c);

f(n-1,b,a,c);

}

}

void main()

{

int n;

scanf("%d",&n);

f(n,'a','b','c');

}

这是我的代码 前面的是定义一个函数 这里递归体现在函数里面还有函数 于是会一次又一次的计算 直到最后把N-1以前的都移到B,最下面的移到C,再把其他的从B移到C。。 无返回的话 应该是这里用void 没有return返回数值

你的次数是对的,我觉得就行了啊 ,题目要求输出啥?

给你个标准答案 你看看有什么不同吧:

#include<stdioh>

int i=0;

void movedisc(unsigned n,char fromneedle,char toneedle,char usingneedle) //该函数将fromneedle杆上的n个圆盘借助usingneedle杆移到toneedle上

{

if(n==1)

printf("%2d-(%2d):%c = = > %c\n",++i,n,fromneedle,toneedle); //将fromneedle上的一个圆盘移到toneedle上

else

{

movedisc(n-1,fromneedle,usingneedle,toneedle); //将fromneedle上的n-1个圆盘借助toneedle移到usingneedle上

printf("%2d-(%2d):%c = = > %c\n",++i,n,fromneedle,toneedle); //将fromneedle上的一个圆盘移到toneedle上

movedisc(n-1,usingneedle,toneedle,fromneedle); //将usingneedle上的N-1个圆盘借助fromneedle 移到toneedle 上

}

}

int main()

{

unsigned n;

printf("Please enter the number of discs:");

scanf("%d",&n);

movedisc(n,'a','b','c');

printf("\tTotal:%d\n",i);

return 0;

}

以上就是关于C语言编程(汉诺塔问题)全部的内容,包括:C语言编程(汉诺塔问题)、用c语言编写程序求汉诺塔的移动步骤、C语言实验题——汉诺塔等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9271908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存