河内塔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了河内塔相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void towers(int,char,char,char);
int main()
{
    int num;
    printf("Enter the number of disks : ");
    scanf("%d", &num);
    printf("The sequence of moves involved in the Tower of Hanoi are :\n");
    towers(num,a,b,c); //将a柱子上的盘子移到b柱子上,借助于c柱子
    getchar();
    getchar();
    return;
}
void towers(int num, char frompole, char topole, char auxpole)
{
    if(num==1) printf("move disk 1 from pole %c to pole %c\n", frompole, topole);
    else 
    {
        towers(num-1,frompole,auxpole,topole); //将a柱子上的num-1个盘子移到c柱子上,借助于b柱子
        printf("move disk %d from pole %c to pole %c\n", num, frompole, topole); //将a柱子上的最大的盘子移动到b柱子上
        towers(num-1,auxpole,topole,frompole);//将c柱子上的num-1个盘子移动到b柱子上,借助于a柱子
    }
}

运行结果

技术分享

以上是关于河内塔的主要内容,如果未能解决你的问题,请参考以下文章

河内塔 C++(使用递归)

河内塔游戏

河内塔 - 如何不跳过每次递归的挂钩

河内塔

c_cpp 以递归方式做河内塔问题的基准.n = 20来自维基百科的伪代码:https://zh.wikipedia.org/wiki/汉诺塔

汉诺塔(河内塔)问题: