实验名称
实验五 汉诺塔问题的程序设计
实验目的
(1)掌握递归的有关概念;
(2)掌握汉诺塔问题的具体求解过程;
(3)在掌握的基础上编程实现汉诺塔的具体实现过程。
实验题目
在A上有按大小排序好的n个金碟,借助B的帮助,将A上的碟子移动到C上,在移动的过程中要严格按照大小顺序,不能将碟子放在比它小的上面,输出结果,输出时要求有文字说明。请任选一种语言编写程序实现上述算法,并分析其算法复杂度。
实验源代码
#include <stdio.h>
void solve(int num,char z1,char z2,char z3);
int main() {
int n;
printf("请输入盘子数量:");
scanf("%d",&n);
solve(n,'A','B','C');
}
void solve(int num,char z1,char z2,char z3) {
if(num>0) {
solve(num-1,z1,z3,z2);
printf("把%c上的盘子移到%c上\n",z1,z3);
solve(num-1,z2,z1,z3);
}
}