`
kmplayer
  • 浏览: 509927 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

经典的递归例题:汉诺塔

阅读更多
1,偶尔翻翻老书,看到了这个题目.
给出一个实现:
#include <iostream>
using namespace std;

void move(int a,int b)
{
    cout<<a<<" --> "<<b<<endl;
}
void hnTower(int n,int a,int b,int c)//n个块,由a经b转到c
{
    if(n==1)
    {
        move(a,c);
        return;
    }
    hnTower(n-1,a,c,b);
    move(a,c);
    hnTower(n-1,b,a,c);
}

int main()
{
    int n=7;
    hnTower(n,1,2,3);
    return 0;
}
分享到:
评论

相关推荐

    C++ 实现汉诺塔的实例详解

    C++ 实现汉诺塔的实例详解 前言: 有A,B,C三塔,N个盘(从小到大编号为1-N)起初都在A塔,现要将N个盘全部移动到C塔(按照河内塔规则),求最少移动次数以及每次的移动详细情况。 要求: 需要采用递归方法和消除...

    c++递归/递推经典题目

    这里是本蒟蒻整理/写的递归...包含:过河卒、过河卒升级版、汉诺塔、级数求和、勒让德多项式、流感传染、判断回文、判断元素是否存在、平方根级数、平面分割升级版、全排列递归版、位数问题、字符串倒序输出、走楼梯。

    大家分享一些算法例题

    5. **汉诺塔问题**:汉诺塔是一个经典的递归问题,涉及到将多个盘子从一个柱子移动到另一个柱子,每次只能移动一个盘子,且大盘子不能放在小盘子之上。这里用递归函数`hanoi`来实现,每次移动n-1个盘子,然后移动最...

    java经典实验

    "java经典实验"这个主题包含了几个著名的算法问题,如汉诺塔、三色旗、杨辉三角和迷宫,这些都是计算机科学教育中常见的练习。下面将详细探讨这些知识点。 1. **汉诺塔**:汉诺塔问题是一个古老的游戏,由3个柱子和...

    C语言中递归函数的应用.pdf

    递归函数在处理具有自相似性质的问题时非常有效,如树状结构的遍历、分治算法、汉诺塔问题等。 首先,递归函数可以分为直接递归和间接递归两种。直接递归是指函数在其代码体内直接调用自身,而间接递归则是通过多个...

    c语言算法经典例题百例

    递归通常用于解决具有自相似性的复杂问题,如斐波那契数列、汉诺塔等;而动态规划则适用于处理具有重叠子问题和最优子结构的问题,如背包问题、最长公共子序列等。书中通过具体的例题,会让读者掌握这两种强大的算法...

    轻松学C语言 C语言程序设计教程 C语言入门教程 第16章 经典例题分析 共39页.pptx

    在本章《轻松学C语言 C语言程序设计教程 C语言入门教程 第16章 经典例题分析》中,我们将深入探讨三个经典的C语言编程问题:八皇后问题、汉诺塔问题和猴子选大王问题,以及如何利用C语言解决这些问题的算法设计。...

    经典算法50例

    其中包含各种经典算法的例题,如递归汉诺塔、dfs、bfs、大数计算、排列组合、各种排序等。

    数据结构1800例题与答案.rar

    8. **递归与分治策略**:递归是函数调用自身解决问题的方式,如斐波那契数列、汉诺塔等;分治策略将大问题分解为小问题解决,如归并排序、快速排序。 9. **动态规划**:解决多阶段决策问题,如背包问题、最长公共子...

    JAVA经典算法40题(20210930134841).pdf

    在Java中,递归是一种常用的算法技术,可以简化某些问题的解决过程,例如计算阶乘、斐波那契数列、汉诺塔等。 2. 安全性:文档中提到的“安全”标签暗示了在编写算法时需要考虑代码的安全性。虽然这部分内容没有...

    清华 殷人昆C++数据结构 书中例题代码

    书中可能有递归和分治算法的实例,如快速排序、归并排序、汉诺塔等。 10. **图论算法**:如最小生成树(Prim算法或Kruskal算法)、最短路径(Dijkstra算法或Floyd算法)等。 这些代码示例对于理解和掌握数据结构...

    数据结构(C语言版) 第三章 栈与队列 知识梳理 + 作业习题详解1

    在汉诺塔问题中,使用递归可以实现将N个盘子从一根柱子移动到另一根柱子,通过递归分解问题,使得每次移动一个盘子。 二、队列 队列是一种先进先出(FIFO)的数据结构,允许在队尾插入元素(入队),在队头删除...

    数据结构1800例题与答案

    10. **递归与分治策略**:如快速排序、归并排序、汉诺塔问题等,都是分治思想的典型应用。 这些例题涵盖了数据结构的各个主要部分,学习者通过解答这些题目,可以加深对数据结构原理的理解,提升编程能力和问题解决...

    C语言经典算法100例

    7. **递归与分治**:递归是解决复杂问题的一种常用方法,而分治策略则是递归的一种高级应用,如快速排序、归并排序、汉诺塔问题等。 8. **动态规划**:动态规划是一种求解最优化问题的方法,如背包问题、最长公共子...

    递 推 算 法 的 资 料

    汉诺塔问题是一个经典的递推问题,其递推公式为hn=2hn-1+1,可以转换为hn=2^(n-1) + 2^(n-2) + ... + 1,即2的幂次之和,反映了汉诺塔移动的规律。 总结来说,递推算法是一种强大的工具,它通过已知的初始条件来...

    数据结构中的几道例题的算法实现

    例如,你可以实现一个基于数组或链表的栈,然后使用它来解决汉诺塔问题或者括号匹配问题。 4. **队列**:队列是一种先进先出(FIFO)的数据结构,常用于任务调度、打印队列等。例如,可以实现一个循环队列,用于...

    算法实例50例

    9. **递归与迭代**:递归是解决复杂问题的一种简洁方式,如阶乘计算、汉诺塔等;迭代则在很多情况下提供更高效的解决方案,如深度优先搜索、广度优先搜索等。 10. **字符串处理**:KMP算法、Rabin-Karp模式匹配算法...

    算法NPC问题

    文章提到了汉诺塔问题,这是一个经典的递归算法例子。汉诺塔问题的解决方案需要2^N-1次移动,而当输入规模稍大时,比如64个盘子,即使假设一个西藏僧人拥有超人的力量每秒能移动一个百万盘子,也需要约50万年才能...

    贪心算法和动态规划算法题解.7z

    这通常会包括经典的递归与动态规划问题实例,如斐波那契数列、汉诺塔、八皇后问题等,同时讲解如何分析问题的复杂度和设计解决方案。 7.贪心法和动态规划.pdf 这个文件很可能详细对比了贪心算法和动态规划的适用...

Global site tag (gtag.js) - Google Analytics