`
ideage
  • 浏览: 326690 次
社区版块
存档分类
最新评论

递归解决Hanoi汉诺塔

阅读更多
汉诺塔,一个古老的问题,递归算法,在讲栈数据结构加深理解的例子.今天重新回顾了一下.


import std.stdio;

int mc=0;

void move(char x,int n,char z)
{
  printf("%i Move disk %i from %c to %c \n",++mc,n,x,z);
}

void hanoi(int n,char x,char y,char z)
{
  if(n==1)
    move(x,1,z);
  else{
    hanoi(n-1,x,z,y); 
    move(x,n,z);
    hanoi(n-1,y,x,z);    
  }
}

void main()
{
  hanoi(10,'a','b','c');
  //writefln("OK");
  return;
}
分享到:
评论

相关推荐

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

    汉诺塔游戏是一种经典的逻辑问题,它展示了递归思想在解决复杂问题时的强大能力。在这个游戏中,有三根柱子和一堆盘子,盘子大小不一,且较大的盘子不能放在较小的盘子上面。游戏的目标是将所有盘子从第一根柱子(源...

    递归实现:汉诺塔问题

    汉诺塔(Hanoi Tower)问题是一个经典的递归问题,源自一个古老的故事。传说在印度的一个神殿里,有三根金刚石柱子,第一根柱子上自上而下按大小顺序叠着64个金盘。神殿的僧侣们要在世界末日之前完成这样一个任务:...

    用递归写的汉诺塔小程序

    本程序通过递归算法实现汉诺塔的解决方案,非常适合那些想要理解递归概念的人学习。 递归是编程中的一个重要概念,它是指在函数或方法内部调用自身的过程。在解决汉诺塔问题时,递归非常适用,因为问题可以通过解决...

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

    在C++中,递归是一种非常有效的解决汉诺塔问题的方法。递归的本质在于将大问题分解为更小的相同或相似的子问题,直到子问题变得足够简单可以直接解决。汉诺塔问题的递归解决方案可以分为两个主要步骤: 1. 将n-1个...

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

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

    递归方法解决汉诺塔问题

    递归方法是解决汉诺塔问题的理想策略,因为问题本身的结构就具有递归特性。在汉诺塔问题中,我们可以将大问题分解为更小的相同问题,并递归地解决它们。具体来说,我们首先将上面的n-1个圆盘从起始柱A移动到中间柱B...

    android hanoi 汉诺塔源码

    2. **递归函数**:这是解决汉诺塔问题的关键,通常名为`moveTower()`或`hanoi()`。它接受三个参数:起始柱、目标柱和辅助柱,用于描述如何在柱子间移动盘子。 3. **基础情况**:当只有一个盘子时,直接将其从起始柱...

    hanoi塔非递归.rar

    以下是使用非递归算法解决汉诺塔问题的基本步骤: 1. **定义数据结构**:首先,我们需要一个数据结构来表示盘子的状态,例如一个数组或列表,其中包含每个盘子的位置和大小。 2. **初始化**:开始时,所有盘子都在...

    递归方法求解汉诺塔问题

    汉诺塔问题(Hanoi Tower Problem)是一个经典的递归问题,在计算机科学领域中被广泛用于教学递归算法的概念。该问题通常描述为:有三根柱子及 n 个不同大小的圆盘,这些圆盘可以按照大小顺序叠放在其中一根柱子上。...

    使用java递归实现汉诺塔(Hanio)

    汉诺塔(Hanoi)问题是一个经典的递归算法问题,起源于19世纪法国数学家爱德华·卢卡斯提出的一个智力游戏。这个游戏中有三个柱子和一堆大小不一的圆盘,所有圆盘起初都堆在第一个柱子上,按照由大到小的顺序...

    Hanoi汉诺塔简单

    在给定的“Hanoi汉诺塔”压缩包文件中,可能包含了演示汉诺塔游戏的程序源代码、动画演示或详细解释,这些资源可以帮助你更直观地理解汉诺塔问题和其解法。通过阅读和实践,你可以进一步提升对递归算法的理解和应用...

    Hanoi汉诺塔 键盘输入层数

    汉诺塔(Hanoi Tower)是一个经典的递归问题,源于19世纪法国数学家爱德华·卢卡斯提出的一个智力游戏。这个游戏涉及到三个柱子和一堆可以在柱子上移动的圆盘,每个圆盘有不同的大小,且较大的圆盘位于较小的圆盘之...

    汉诺塔演示程序(包含二叉树的演示动画)

    解决汉诺塔问题的关键在于递归策略:首先将上层的n-1个盘子借助第三个柱子从初始柱子移动到中间柱子,然后将最底层的大盘子直接移动到目标柱子,最后再借助中间柱子将剩余的n-1个盘子从中间柱子移到目标柱子。...

    hannuota.rar_Hanoi_汉诺塔_汉诺塔 非递归

    在提供的压缩文件中,"www.pudn.com.txt"可能包含的是关于汉诺塔问题的更多信息或者代码示例,而"hannuota"可能是一个程序文件,用于实现非递归的汉诺塔解决方案。如果你想要深入理解并实践这个算法,可以查看或运行...

    汉诺塔递归算法--C语言

    解决汉诺塔问题的关键在于递归策略。我们定义一个函数`move(n, t1, t2, t3)`,表示将n个圆盘从塔t1移动到塔t2,使用塔t3作为辅助。该问题可以分解为以下三个步骤: 1. 将n-1个圆盘从t1移动到t3(使用t2作为辅助):...

    汉诺塔的递归算法 C++

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

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

    总之,非递归的汉诺塔问题C++实现是一种创新的解决方案,它利用数据结构来避免递归调用的开销,展示了算法设计的灵活性和创造性。通过学习这种实现,你可以更深入地理解数据结构、算法以及它们在实际编程中的应用。

    c语言递归实现的汉诺塔

    在C语言中,我们可以利用递归算法来解决汉诺塔问题。递归是一种函数调用自身的技术,常用于解决复杂问题,使得代码更加简洁易懂。 首先,我们需要理解汉诺塔问题的基本规则: 1. 有一个塔A,包含n个盘子,按大小...

    递归实现汉诺塔程序详解

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

    汉诺塔非递归程序

    传统的汉诺塔解决方案通常采用递归算法,但递归算法可能会导致大量的函数调用,从而消耗较多的系统资源。为了解决这一问题,可以采用非递归的方式来优化算法效率。给定的代码展示了一种非递归实现的汉诺塔算法,主要...

Global site tag (gtag.js) - Google Analytics