目录
什么是汉诺塔:
汉诺塔又称河内塔,是起源于印度古老传说的益智玩具,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
示例:
程序基本算法:
分析问题的步骤:
1.如果只有一个圆盘就直接从A移动到C
2.要完成n个圆盘
先将n-1个圆盘从A移动到B
将第n个盘从A移动到C
将n-1个圆盘从B移动C
解决问题的核心:
Hanfun(n,one,two,three)
one---three (n=1)
hanfun(n-1,one, three, two)
one---three
hanfun(n-1,two,one,three)
解决问题程序:
#include<stdio.h>
void move(char one, char two)
{
printf("%c--->%c\n" , one, two);
}
void hanfun(int n, char one, char two, char three)
{
if (n == 1)
{
move(one, three);
}
else
{
hanfun(n - 1, one, three, two);
move(one, three);
hanfun(n - 1, two, one, three);
}
}
void main()
{
int n;
scanf("%d", &n);
hanfun(n, 'A','B','C');
getch();
}