趣味算法-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; }