汉诺塔递归实现

#include <stdio.h>

//汉诺塔递归实现
void move(int n,char a,char b,char c)
{
    if (n == 1)
        printf("\t%c->%c \n",a,c);  //一个盘子直接从a挪到c
    else
    {
        move(n-1,a,c,b);             //把n-1个盘子从a,通过c移动到b
        printf("\t%c->%c \n",a,c); //把a上的最后一个盘子移动到c上,实现了最大盘子放下面
        move(n-1,b,a,c);            //把n-1个盘子从b,通过a移动到c
    }
}
int main()
{
    int sum;
    printf("请输入盘子个数:");
    scanf("%d",&sum);
    printf("汉诺塔移动路径:\n");
    move(sum,'a','b','c');
    return 0;
}

 

posted @ 2021-04-27 00:55  nanfengnan  阅读(41)  评论(0编辑  收藏  举报