Hanoi Tower

2019-01-07  本文已影响0人  Pwnmelife
#include <stdio.h>
#include <stdlib.h>

void mov(int n, char x, char y, char z);

int main()
{
    char x, y, z;
    x = 'x';
    y = 'y';
    z = 'z';
    printf("Please input the hanoi tower number\n");
    int n;
    scanf("%d", &n);
    mov(n, x, y, z);
}
/*
 * 将全部盘从X,借助Y,移到Z
 * 1. 当n=1时,直接移动到目标顶针
 *  2. 当n>2,分为以下三步
 *  -  将n-1个盘移到Y,借助Z
 *  -  将第n个盘移到Z,
 *  -  将n-1个盘从Y移到Z,借助X
 */
void mov(int n, char x, char y, char z) {
    if (1 == n) {
        printf("%c --> %c\n", x, z);
    }
    else {
        mov(n - 1, x, z, y);
        printf("%c --> %c\n", x, z);
        mov(n - 1, y, x, z);
    }
}
上一篇下一篇

猜你喜欢

热点阅读