求编程详解

有a、b、c三根针,a针上有10个大小不同,金字塔式放置的圈,现在需把a针上的10个圈移到c针上,每次都只能移一个,且必须总小圈在上大圈在下,可以借助b针操作,编程代码如... 有a、b、c三根针,a针上有10个大小不同,金字塔式放置的圈,现在需把a针上的10个圈移到c针上,每次都只能移一个,且必须总小圈在上大圈在下,可以借助b针操作,编程代码如下:

move(int n,int x,int y,int z)
{
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{
int h=10;
printf("操作步骤如下:\n",h);
move(h,'a','b','c');
}

求解释两个递归函数move,我卡在这两个递归函数上看不懂,不知道怎么得出来的结果,跪求
展开
 我来答
dw0513hh
2012-10-19 · 超过22用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:43万
展开全部
解释如下:
按照游戏规则,大的必须在下面,小的盘子必须在上面,且a是源塔盘,b是辅助塔盘,C是目标塔盘。试问:1.如果只有1个盘子,那该怎么移动?你肯定知道:直接把a上面的圈子放到C上就行了。2.如果a上有2个圈子呢?我想你也肯定知道:要把最上面的那个小圈子放到辅助塔盘b上,然后把最小面的放到c上,再把b上面的放到C上就结束了,一共三步。
当n>3时,我们可以这样理解,把n-1个圈子看做一个整体,剩下的一个最大的单独看待,这样就和2个圈子的移动方法一样了。至于你怎样把n-1个圈子借助c移动到b上面,其实就是个递归调用的问题了。
还有:你这条语句 printf("操作步骤如下:\n",h);显然错误,变量h不会显示的。
--
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有... 点击进入详情页
本回答由--提供
百度网友13ab629
2012-10-17 · TA获得超过121个赞
知道答主
回答量:34
采纳率:0%
帮助的人:34.1万
展开全部
建议搜一下“汉诺塔算法”^_^
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式