首页 > 代码库 > 经典递归小程序--汉诺塔
经典递归小程序--汉诺塔
#include <stdio.h>
/*
思路:1、将1到n-1号盘子借助C移到B上
2、将n号盘子移到C上
3、将1到n-1号盘子借助A移到C上
*/
//初始化步数
int i = 0;
void move(int,char,char);
void hannuota(int,char,char,char);
void main(void){
int n;
printf("请输入汉诺塔盘子的个数:");
scanf("%d",&n);
hannuota(n,‘A‘,‘C‘,‘B‘);
}
//移动盘子方法
void move(int n,char from,char to){
printf("第%d步,将%d号盘子从%c移到%c\n",++i,n,from,to);
}
//汉诺塔递归算法
void hannuota(int n,char from,char to,char depend_on){
if(n == 1){
move(1,from,to);
}else{
hannuota(n-1,from,depend_on,to);
move(n,from,to);
hannuota(n-1,depend_on,to,from);
}
}
经典递归小程序--汉诺塔
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。