junqing的个人博客分享 http://blog.sciencenet.cn/u/junqing

博文

汉诺塔算法的递归算法C++实现

已有 17885 次阅读 2012-4-13 11:46 |系统分类:科研笔记| 算法, 程序

/****以下程序是汉诺塔算法的递归算法实现,算法虽然简单,但是能体现出递归算法的精髓,

   正所谓"麻雀虽小,五脏俱全"!  很值得编程人员回味 ^_^

****/

#include<iostream>

using namespace std;

void move(int n, char x, char y)
{
    cout<<"No."<<n<<": "<<x<<" -> "<<y<<endl;
}

void hanoi(int n, char a, char b, char c)
{
    if(n==1)
        move(1,a,c);
    else{
        hanoi(n-1,a,c,b); //可以理解为通过借助c,在b处已经放好n-1个盘
        move(n,a,c);       //第n号盘从a处移到c
        hanoi(n-1,b,a,c); //解决b处n-1个盘,最后放到c处
 } 
}

int main()
{  
    cout<<"Please enter the nunber for Hannoi: ";
    int num=1;  //初始化为1
    cin>>num;
    hanoi(num,'A','B','C');
    cout<<"The process is finished!"<<endl;
    return 0;
}   



https://wap.sciencenet.cn/blog-458387-558798.html

上一篇:普适计算的概念包含了云计算?
下一篇:XML 语言学习笔记

1 黄富强

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-5-13 18:02

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部