您的位置:首页 > 其它

使用函数的递归调用来解决Hanoi(汉诺)塔问题。

2013-09-25 11:40 411 查看
#include<stdio.h>

void hanoi(int n, char x, char y, char z);
void move(char x, char y);

int times = 0;	//表示移动圆盘的次数

void main()
{
setvbuf(stdout, NULL, _IONBF, 0);    //使用eclipse开发环境时必须包含这个语句。不允许printf()函数输出到缓冲区,而是直接输出。

int m;
printf("input the number of disks:");
scanf("%d", &m);
printf("The step to moving %d diskes from A to C:\n", m);
hanoi(m, 'A', 'B', 'C');	//将m个圆盘从A塔移动到C塔。
}

/*
* 将n个圆盘从x塔移动到z塔,y塔作为辅助塔
*/
void hanoi(int n, char x, char y, char z)
{
if (n == 1)
move(x, z);
else
{
hanoi(n - 1, x, z, y);
move(x, z);
hanoi(n - 1, y, x, z);
}
}

void move(char x, char y)
{
printf("%d:\t%c-->%c\n",++times, x, y);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐