输出汉诺塔的实现方式?

Posted nanzh

tags:

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

汉诺塔实现将所有盘从A移动到C位置

分析:

(1)将A上n-1个盘子移动到B针(借助C针)

(2)将A针剩下的剩下的一个盘子移动到C针

(3)将n-1个盘子从B移动到C针上(借助A针)

事实上,上面3步操作包含下面两种操作。

(1)将多个盘子从一个针移动到另一个针上,这是一个递归的过程

(2)将1个盘子从一个针上移动到另一个针上

于是,实现方式可见下面源码(c++)

#include<iostream>
using namespace std;
void print_path(char src,char dest)
{
    cout<<src<<"-->"<<dest<<endl;
}
void hanoi(int n,char src,char medium,char dest)
{
    if(n==1)
        print_path(src,dest);
    else{
        hanoi(n-1,src,dest,medium);
        print_path(src,dest);
        hanoi(n-1,medium,src,dest);
    }
}
int main(){
    int m;
    cout<<"the number of diskes:";
    cin>>m;
    cout<<"the moving step "<<m<<" diskes:"<<endl;
    hanoi(m,\'A\',\'B\',\'C\');
    return 0;
}

运行结果如下图所示:

 

  来源:C++语言程序设计(第四版)

 

以上是关于输出汉诺塔的实现方式?的主要内容,如果未能解决你的问题,请参考以下文章

5-17 汉诺塔的非递归实现 (25分)

习题3.10 汉诺塔的非递归实现(25 分)浙大版《数据结构(第2版)》题目集

汉诺塔的非递归实现(栈)

汉诺塔的非递归实现(借助堆栈模拟递归)

汉诺塔的C语言代码怎么写啊

递归3之汉诺塔的实现