您的位置:首页 > 理论基础 > 数据结构算法

郝斌数据结构关于汉诺塔的C算法解析

2016-01-17 14:36 253 查看
算法:

#include <stdio.h>

void hannuota(int n, char A,char B, char C)
{
if(1==n)
{
printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n",n,A,C);
}
else
{
hannuota(n-1,A,C,B);
printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n",n,A,C);
hannuota(n-1,B,A,C);
}
}
int main(void)
{
char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C';
int n;
printf("请输入要移动盘子的个数:");
scanf("%d",&n);

hannuota(n,'A','B','C');

return 0;
}


算法结构分析,以3为例



伪算法:

if(n>1){

如果:是1个盘子

直接将A的盘子从A移到C

否则:

A的n-1个盘子从A借助C移到B

A的第n个盘子直接从A移到C

B的n-1个盘子借助A移到C

}

先看伪算法看不懂,直接看算法实现然后看算法实现的解析,最后看伪算法,就差不多能懂了

反正我没懂这个伪算法怎么出来的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: