C语言函数递归调用汉诺塔问题

#include<stdio.h>intmain(){voidhanoi(intn,charone,chartwo,charthree);intm;printf("inp... #include <stdio.h>
int main()
{
void hanoi(int n,char one ,char two,charthree);
int m;
printf("input the number of diskes:\n");
scanf("%d",&m);
printf("The step to move %ddiskes:\n",m);
hanoi(m,'A','B','C');
}
void hanoi(int n,char one ,char two,charthree)
{
void move(char x,char y);
if(n==1)
move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
void move(char x,char y)
{
printf("%c->%c\n",x,y);
}
/////////////////////////////////////////////////////////////////////分割线///////////////////////////////////
我现在理解函数可能陷入一个误区了,就拿这题来说。hanoi函数内部没有一条语句是起作用的。什么意思,比如我假定一个新函数add:
Int add(int a,int b)
{
Int c;
c=a+b;
return c;
}
这个函数我通过c=a+b;这条语句很明显就知道了这是执行相加运算的函数。但是反观这道题,hanoi直接就是个空函数,里面一条起作用的语句都没有,怎么就能运算出结果,这点让我非常的头疼。而且在hanoi函数中又调用了hanoi函数,我知道这是递归。但是这函数里面是空的啊。
void hanoi(int n,char one ,char two,charthree);这只是单纯的定义函数变量,没有具体功能。只是说理解的时候可以理解成:将n个盘子从one通过two移动到three。但计算机不会这么理解。它是怎么通过hanoi空函数实现功能的,这点才是我最想,也是最迷糊的地方,希望你能帮我指点迷津
展开
 我来答
听不清啊
高粉答主

2015-11-18 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

void move ( char x, char y )    //完成一个盘子从x 移到 y

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清莲玉
2013-08-07 · TA获得超过103个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:81.2万
展开全部
move函数有实际作用啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式