汉诺塔问题

// Hanoi.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <stdio.h>

int count = 0; //全局变量,保存移动次数

/*
汉诺塔问题,将n个盘子从A移动至C,借助C,输出移动方式和移动次数
*/
void Hanoi(int n, char A, char B, char C)
{
    if(n == 1)
    {
        printf("Move %c ----> %c \n", A, C);
        count++;
        return;
    }
    else
    {
        Hanoi(n-1, A, C, B); //将前n-1个盘子借助于C移动至B
        printf("Move %c ----> %c \n", A, C); //将第n个盘子移动至C
        count++;
        Hanoi(n-1, B, A, C); //将B的n-1个盘子借助于A移动至C
    }
}


int _tmain(int argc, _TCHAR* argv[])
{
    Hanoi(7,'A','B','C');
    printf("Move Times: %d.\n",count);
    getchar();
    return 0;
}

 

posted on 2014-03-05 10:03  欧阳君  阅读(89)  评论(0)    收藏  举报

导航