习语言写的汉诺塔递归移动盘子的代码

汉诺塔是经典的递归编程例子了,网上随便抓一下C语言的代码就很多,用习语言当然也很容易实现。


游戏规则按照维基的说法:


有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:

  1. 每次只能移动一个圆盘;
  2. 盘不能叠在盘上面。

提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。


以下是习语言代码:

<代码 华丽的隔断线---------------------------->

/*问题:第一个柱称为初始柱,为初始放盘子的柱子,第二个柱子是目标柱,第三个柱子是辅助柱子*/






#包含 “习语言系统.接口”




无返回值 初始柱移到目标柱(整数);


无返回值 目标柱移回初始柱(整数);


无返回值 主函数(){

整数 x;
格式输出("请输入初始柱上盘子数\n");/*输入盘子数目*/
格式输入("%d",&x);
初始柱移到目标柱(x);
暂停();

}
/*以下是移动的主要函数,将盘子从初始柱上移动向目标柱子*/


无返回值 初始柱移到目标柱(整数 x){
格式输出("现在开移动%d个盘子\n",x);
如果(x==1)
格式输出("从 初始柱 移到 目标柱\n");/*如果只有一个盘子的话,只需要移动到目标柱子上*/


或者(x==2){
格式输出("从 初始柱 移到 辅助柱\n");
格式输出("从 初始柱 移到 目标柱\n");
格式输出("从 辅助柱 移到 目标柱\n");/*如果有二个盘子的情况*/
}


否则{
初始柱移到目标柱(x-1);/*如果有三个以上的盘子,那么先把X-1个的盘子移动到目标柱上*/
格式输出("从 初始柱 移到 辅助柱\n");/*然后把最底下的一个盘子移动到可借助柱子上*/
目标柱移回初始柱(x-1);/*再把X-1个的盘子移回初始柱*/
格式输出("从 辅助柱 移到 目标柱\n");/*将最下方的盘子移到目标柱上*/
初始柱移到目标柱(x-1); /*将x-1个盘子移动到目标柱子上*/
}
}


/*以下是当盘子大于等于3个时需要用到的将X-1个盘子移动回初始柱子的函数*/
无返回值 目标柱移回初始柱(整数 x){

如果(x==2){
格式输出("从 目标柱 移到 辅助柱\n");
格式输出("从 目标柱 移到 初始柱\n");
格式输出("从 辅助柱 移到 初始柱\n");
}


否则
目标柱移回初始柱(x-1);/*递归调用*/
}

<代码结束 华丽的隔断线---------------------------->



<结果 华丽的隔断线---------------------------->

请输入初始柱上盘子数
现在开移动5个盘子
现在开移动4个盘子
现在开移动3个盘子
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动3个盘子
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动4个盘子
现在开移动3个盘子
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动3个盘子
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
从 初始柱 移到 辅助柱
从 目标柱 移到 辅助柱
从 目标柱 移到 初始柱
从 辅助柱 移到 初始柱
从 辅助柱 移到 目标柱
现在开移动2个盘子
从 初始柱 移到 辅助柱
从 初始柱 移到 目标柱
从 辅助柱 移到 目标柱
按任意键继续


<结果结束 华丽的隔断线---------------------------->


结果真是太多了,代码可以在这里下载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值