C程序设计问题 急急急急急急急急急急急急急急急!!!!!!!!!!!!!!!!!!!!

TowerofHanoi问题要求:采用全局和局部两种不同方法r核心点①不能用move函数中的局部变量统计其中printf()的执行次数(圆盘移动次数),原因是局部变量在每... Tower of Hanoi问题

要求:采用全局和局部两种不同方法 r核心点 ①不能用move函数中的局部变量统计其中printf()的执行次数(圆盘移动次数),原因是局部变量在每一层递归调用中是新的变量,因此不能在前一次累计基础上继续累计②为了得到累计结果,在每问题:统计Tower of Hanoi问题中圆盘移动次数 ③一层递归调用中需对共同的内存单元进行累加操作

#include<stdio.h>
void move(int,char,char,char);
int t=0;
int main()
{
int m;
printf("Input the number of dislike:");
scanf("%d",&m);
printf("The step to move %d dislikes:\n",m);
move(m,'A','B','C');
printf("\n");
printf("一共移动了%d次。",t);
printf("\n");
}

void move(int n,char x,char y,char z)
{
if(n>0)
{
move(n-1,x,z,y);
printf("\nMoving: %c->%c",x,z);
t++;
move(n-1,y,x,z);
}
return ;
}

谁可以帮我写一下这个程序的思路
求大神!!!!!!!!!!
我真不会啊
需要程序的讲解
展开
 我来答
青云软件工作室
2012-11-14 · 超过10用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:15.6万
展开全部

  #include <stdio.h>

  void move (int h,char c,char f)//h为盘的编号,从c轴移到f轴

  {

  printf("The num of %d disk is moved: %c-->%c/n",h,c,f);

  }

  void hanoi (int n,char x,char y,char z)//n为盘的编号,x为这n个盘所在的轴,y为中间轴,z为目的轴

  {

  if (n == 1)

  move (1,x,z);

  else

  {

  hanoi(n-1, x, z, y);//先把x轴上编号为n的上面的n个盘从x(所在轴)移到y(目的轴),z为中间轴

  move (n,x,z);//将编号为n的盘从x移到n

  hanoi (n-1, y, x, z);//这时这n-1个盘在y轴上,将这n-1个盘从y轴(所在轴)移到z轴(目的轴),x为中间轴

  • }

  }//整个是个递归调用,将n个盘的转移转化为n-1个盘的转移,在转为n-2个盘的转移…………1个盘的转移

  void main()

  {

  int num;

  printf("The number of disks:/n");

  scanf("%d",&num);

  hanoi(num,'A','B','C');

  }

和你那个一样的。。。你看懂了C语言实现的思路就好。。

chch噢耶
2012-11-13 · 超过26用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:63.4万
展开全部
去看看汉诺塔原理吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式