趣味算法-Hanoi

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


你可能感兴趣的:(趣味算法-Hanoi)