网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月07日漏签0天
c语言吧 关注:798,842贴子:4,356,052
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 16回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

求助汉诺塔问题

  • 只看楼主
  • 收藏

  • 回复
  • 轻抚灬那缕浮华
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
主要输出的这个地方
???弄不懂


  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
-
--
---
A B C
--
--- -
a b c
--- - --
a b c
-
--- --
a b c


2025-06-07 19:48:28
广告
  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
该死的百度。。。。。


  • 轻抚灬那缕浮华
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
主要是代码不懂怎么写


  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用递归。。。


  • 轻抚灬那缕浮华
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个求汉诺塔的代码我知道是用递归,是输出的时候1,2,1不懂
#include<stdio.h>
int main()
{
void hanoi(int n,char one,char two,char three);
int n;
scanf("%d",&n);
hanoi(n,'A','B','C');}
void hanoi(int n,char one,char two,char three)
{
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("Move disk %d from %c to %c",n,x,y);
}


  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1,2,1代表盘子的编号。。。。。


  • 轻抚灬那缕浮华
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是啊,如果有3个盘子,每次数又不一样了啊,那求这个1,2,3.。。的用什么方法呢


2025-06-07 19:42:28
广告
  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
n那就是盘子编号,只要输出就行了。。。
而且你的move函数有问题,少传了一个n参数。。。你的n是局部变量。。。。


  • sincerefly
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
# include <stdio.h>
int main(void)
{
void hanoi(int n, char one, char two, char three);//对hanoi函数的声明
int m;
printf("input the number of diskes:");
scanf("%d", &m);
printf("The step to move %d diskes:\n", m);
hanoi(m, 'A', 'B', 'C');
return 0;
}
void hanoi(int n, char one, char two, char three)//定义hanoi函数
//将n个盘从one座借助two座,移动到three座
{
void move(char x, char y);//对move函数的声明
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);
}


  • 轻抚灬那缕浮华
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个没有达到我的要求啊


  • 轻抚灬那缕浮华
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
少了什么?怎么说


  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void move(char x,char y,int n)
{
printf("Move disk %d from %c to %c",n,x,y);
}
调用的时候应该是move(one, three, n)就行了。。。


  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

if(n==1)
move(one, three, 1);
else
{
hanoi(n-1, one, three, two);
move(one, three, n);
hanoi(n-1, two, one, three);
}
}


2025-06-07 19:36:28
广告
  • 姜太公__榕
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
if(n==1)
move(one, three, 1);
else
{
hanoi(n-1, one, three, two);//将1到(n-1)号的所有盘子移到第2根柱子
move(one, three, n);//将第n个盘子移到第3个柱子
hanoi(n-1, two, one, three);//将1到(n-1)号的所有盘子移到第3根柱子
}
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 16回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示