hanoi汉诺塔。。C++递归入门(不断更新中)

原创 2011年01月24日 14:08:00

汉诺塔的非递归算法看的确实比较累,先看看递归算法。。精妙之处让人惊叹啊。

递归只关心起始地,目的地,方法,不关心中间过程。。比如把一号部分通过3号到达2号。。不用管具体的调用过程。。

 

附上本人PS过的源代码:

#include <iostream>
#include <string>
using namespace std;
 void move(char getone,char putone);
 void hanoi(int n,char one,char two,char three);
 
  static int sum;
void main()
{
   
 int m;
 
    cout<<"input the number of disks:";
 cin>>m;
 cout<<"the step to move "<<m<<" diskes:"<<endl;
 hanoi(m,'A','B','C');
 cout<<"sum="<<sum<<endl;
 
 
 
 
 
}

 void move(char getone,char putone)
{
 cout<<getone<<"-->"<<putone<<endl;
    sum++;
    
}


void hanoi(int n,char one,char two,char three)

{
  if(n==1)
  {   move(one,three);
     
  }
  else
  {


   hanoi(n-1,one,three,two);
   move(one,three);
 
    
  

   hanoi(n-1,two,one,three);
   
  }


}

运行结果:sum为一共执行了几步.
。。。

深刻的理解递归汉诺塔(Hanoi)

算法: 1, 从目标出发,我们将n个盘子从A移动到B通过C,假如我们这样写 hanoi(n, a, b, c);...
  • msdnwolaile
  • msdnwolaile
  • 2016年03月02日 18:57
  • 655

双色汉诺塔问题

//双色汉诺塔问题 #include using namespace std; int removeTimes = 0; void hanoiorignal(int nmovnum, char cz...
  • firechungelaile
  • firechungelaile
  • 2014年09月29日 22:19
  • 2404

递归3: 汉诺塔的递归与迭代实现

递归实现与main(): /*------------------------------------------------------ 汉诺塔主要是有三个塔座X,Y,Z,要求将从小到大编号为 1...
  • yss28
  • yss28
  • 2013年10月18日 11:23
  • 1966

双色汉诺塔

双色汉诺塔问题: 分析:设盘子原来在A柱上,目标为B、C柱。显然与单色汉诺塔问题相同为典型的递归问题。将最后的盘子移动的目标步骤为: (1) 除最后两个盘子外,将所有的盘子移动到C; (2) 将...
  • woniu317
  • woniu317
  • 2013年12月11日 21:44
  • 1483

汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归

汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归 1. 汉诺塔问题的提法 汉诺塔问题是使用递归解决问题的经典范例。 传说婆罗门庙里有一个塔台,台上有3根标号为A、B、C的用钻石做成...
  • cainv89
  • cainv89
  • 2016年05月22日 23:32
  • 6650

汉诺塔系列专题(逐步理解递推递归)

最裸的汉诺塔: 第一步:把n-1个盘子移到B柱 第二步:把第n个柱子移到C柱 第三步:把n-1个盘子移到C盘 第一步和第三步是一样的,如果只需要求最少的步数,可以不管中间步骤,用递推直接写出即可 核心...
  • u014135021
  • u014135021
  • 2016年03月28日 15:34
  • 882

noip2007 Hanoi双塔问题 (动态规划,汉诺塔问题,高精乘低精)

A1162. 汉诺双塔 时间限制:1.0s   内存限制:256.0MB   总提交次数:1164   AC次数:360   平均分:51.25 将本题分享到:    ...
  • yuyanggo
  • yuyanggo
  • 2015年09月19日 09:43
  • 1851

汉诺塔递归方法和非递归方法

三个盘子为A,B,C,其中C是中介盘,我们要遵守移动规则将A上的盘子要全部通过B移动到C。#include #include using namespace std; #define MaxSize ...
  • sinat_37718529
  • sinat_37718529
  • 2017年11月22日 17:02
  • 91

Hanoi汉诺塔问题

Hanoi汉诺塔 汉诺塔问题: 设A,B,C是三个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自上到下,由大到小地叠放在一起。现要求将塔座A上的这一叠圆盘移动到塔座C上 ( 可以借助...
  • cassiePython
  • cassiePython
  • 2015年09月02日 22:31
  • 688

C++_递归实现汉诺塔

A为存放盘子的塔,B为目标塔,C为辅助塔 算法分为三步 一、将A上n-1个盘子全部放到C塔上 二、将A上剩下的一个盘子放到B塔上 三、将C塔上的盘子全部放到B塔上注:不需要考虑如何移动n-1个...
  • a7055117a
  • a7055117a
  • 2015年09月10日 20:27
  • 3896
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hanoi汉诺塔。。C++递归入门(不断更新中)
举报原因:
原因补充:

(最多只允许输入30个字)