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

C++用递归解决汉诺塔问题

    博客分类:
  • C++
阅读更多
递归确实是一个不错的算法,可以将原来很复杂的问题简化.这里要注意的就是要确定一个出口条件.不然会出现段错误,,也就是栈溢出.
  汉诺塔问题这里不再赘述,而它的出口条件也就是移动一个盘子,从源地址移动到目的位置.而如果要用递归的方法来实现就要将移动的方法简化,我们先考虑移动n-1个盘子,从源移动到临时位置,然后还剩下一个盘子,就将其移动到目的位置即可.
   但是用递归也有一定的缺点,它比较占用资源,虽然算法简单.
#include <iostream.h>
//use namespace std;

//num:个数   src:源  dst:目的地  tmp: 临时位置
void hano(unsigned int num,char src,char dst,char tmp);

int main(void)
{
	int t;
	cout << "Please input an integer : ";
	cin >> t;
	hano(t,'A','C','B');
}

void hano(unsigned int num,char src,char dst,char tmp)
{
	if(1==num)	cout << src << " --> " << dst << endl;
	else
	{
		hano(num-1,src,tmp,dst);
		hano(1,src,dst,tmp);
		hano(num-1,tmp,dst,src);
	}

}
0
0
分享到:
评论

相关推荐

    c++递归实现汉诺塔问题

    汉诺塔问题是一个经典的计算机科学问题,源自印度的古老传说,它涉及到三个柱子和一堆大小...以上就是关于“C++递归实现汉诺塔问题”的详细解析,它涵盖了递归算法设计的基本概念、实例代码以及相关的计算机科学知识。

    函数递归调用-汉诺塔问题_c++实现汉诺塔问题_

    解决汉诺塔问题的关键在于递归策略,即通过将问题分解为更小的子问题来解决。在C++中,我们可以定义一个递归函数来实现这个过程。首先,我们需要理解递归的基本概念:递归是一个函数调用自身的过程,通常用于处理...

    汉诺塔的非递归实现,c++

    这样,我们就可以按照汉诺塔的规则逐步解决问题,而无需使用递归。 在`hanoi.cpp`文件中,你应该能够找到上述代码的具体实现,包括`moveDisk`函数的细节。通过这种方式,我们可以学习如何将递归算法转换为迭代算法...

    c++用递归方法求解汉诺塔问题

    使用C++来解决汉诺塔问题,主要依赖于递归算法。递归是一种解决问题的方法,它将问题分解为更小的子问题,直到子问题变得足够简单可以直接求解。在汉诺塔问题中,递归的基本思路是:先将上面的n-1个盘子借助柱子B从A...

    C++基于递归算法解决汉诺塔问题与树的遍历功能示例

    本文实例讲述了C++基于递归算法解决汉诺塔问题与树的遍历功能。分享给大家供大家参考,具体如下: 递归是把问题转化为规模缩小的同类问题,然后迭代调用函数(或过程)求得问题的解。递归函数就是直接或间接调用自身...

    C++递归函数(汉诺塔)代码

    以下是一个简单的C++递归函数实现汉诺塔游戏的代码示例: ```cpp #include using namespace std; void hanoi(int n, char from_rod, char to_rod, char aux_rod) { if (n == 1) { cout ; return; } hanoi(n ...

    C++递归算法(汉诺塔问题)

    C++递归算法(汉诺塔问题)

    递归实现:汉诺塔问题

    ### 递归实现:汉诺塔问题 #### 经典问题背景 汉诺塔(Hanoi Tower)问题是一个经典的递归问题,...本篇介绍的C++代码实现了一个基本的汉诺塔问题解决方案,对于理解递归算法及其在编程中的应用具有重要的参考价值。

    递归实现汉诺塔程序详解

    汉诺塔问题可以通过递归算法来解决。对于N个圆盘的汉诺塔问题,其递归策略可以分为以下几步: 1. 将N-1个圆盘从初始柱子移动到辅助柱子。 2. 将剩余的一个圆盘直接移动到目标柱子。 3. 再将N-1个圆盘从辅助柱子移动...

    汉诺塔的递归算法 C++

    用C++实现汉诺塔的递归算法,定义了类和方法。

    使用C++解决汉诺塔问题

    C++解决汉诺塔问题 在计算机科学中,汉诺塔问题是一...汉诺塔问题可以使用递归算法来解决,C++ 是一种非常适合实现这种算法的语言。同时,我们也可以分析汉诺塔问题的时间复杂度和空间复杂度,了解问题的计算复杂度。

    c++小游戏-汉诺塔

    经典的汉诺塔算法是一个自底向上的递归过程,通过将大问题分解为小问题来解决。在这个游戏中,程序会计算出最小的移动步骤,并在屏幕上展示每一步的过程。 6. **移动步骤呈现**:每一层圆盘的移动都需要精确控制。...

    解决汉诺塔问题的算法

    汉诺塔问题C/C++;解决汉诺塔问题的算法;递归

    汉诺塔问题(递归,C++)

    递归是一种解决问题的方法,它通过将问题分解为更小的子问题来解决大问题。在汉诺塔问题中,我们将大问题(将所有盘子从A移动到C)分解为几个递归步骤:首先将除最上面的盘子外的所有盘子从A移动到B,然后将最上面的...

    汉诺塔C++程序,递归法

    ### 汉诺塔问题及C++实现 #### 概述 汉诺塔(Hanoi Tower)是一个经典的递归问题,通常被用作教授递归算法的...此外,本篇代码示例还展示了如何在C++中使用递归函数来解决问题,这对于初学者来说是非常有益的实践。

    c++源代码,汉诺塔

    汉诺塔是一个经典的递归问题,它...总结来说,通过这个汉诺塔的C++源代码,我们可以学习到递归算法在解决问题中的应用,以及如何使用C++来实现这种算法。这不仅有助于初学者理解递归,也有助于他们在编程思维上的提升。

    四柱汉诺塔代码(c++)

    在编程实践中,理解和掌握四柱汉诺塔的算法有助于提升解决问题的能力,特别是对于那些需要通过分解大问题来解决的小问题。此外,通过动态规划和其他优化技术,我们可以进一步改进这种算法,使其在处理大量盘子时更...

    C++课程设计(汉诺塔)代码及报告

    在C++中,解决汉诺塔问题通常采用递归方法。递归的核心思想是将大问题分解为小问题,直到小问题可以直接求解。对于汉诺塔问题,我们可以将任务分解为三部分:将顶部n-1个圆盘从A移动到B,将最大的圆盘从A移动到C,...

    递归实现汉诺塔问题,c++实现

    递归实现汉诺塔问题,用c++写的。在visual studio环境下编译即可运行,很适合初学数据结构的人

Global site tag (gtag.js) - Google Analytics