您的位置:首页 > 其它

趣味算法-Hanoi

2012-01-31 11:57 197 查看
趣味算法-Hanoi:

主要是说明递归的思路。

A B C三个金属棒,有n个盘片,起始时盘片都在n上,要求把所以盘片都移动到C上可以利用B。原则大盘一定要在小盘下面。

思路:

1) 把起始位置上A的n-1个盘子移动到B上, 这时可以通过C,这时可以移动A上的第n个盘子。

2) 把B上的n-1个盘子在都移动到C上,这时可以通过A,这时达到目的,移动完成。

注意:参数的顺序和含义,否则容易造成混淆。

#include <stdio.h>

void move(int n, char chStart, char chPass, char chEnd )
{
if (n == 1)
{
printf("move %c  --->  %c \n", chStart, chEnd);
return;
}
move(n-1, chStart, chEnd, chPass);
printf("move %c  --->  %c \n", chStart, chEnd);
move(n-1, chPass, chStart, chEnd);
}

int main()
{
int i = 0;
printf("Hanoi start ================\n");
move(3, 'A', 'B', 'C');

scanf("%d", &i);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: