汉诺塔问题具体解答递归方法

来源:互联网 发布:淘宝直播一般佣金多少 编辑:程序博客网 时间:2024/05/16 06:24

/*汉诺塔问题具体解答递归方法

athor: 马寒

示例一:汉诺塔问题

三个步骤(算法设计概要):

1:将a 上的n-1 借助c 移动到b

2:将a移动到c

3: 将b借助a移动到c

 

(我的随想:虚拟化置换相当与碟子的相对名称只是虚拟化的东西,但是出于函数调用的关系

所以还是利用了函数定义的形式将其程序化 示例就是将hano(n,a,b,c)->hano(n-1,b,a,c)

a此时就是b,这个只是一种想法(其核心还是栈)。此时柱子可以理解为虚拟化,栈)

 

一般的考虑就是树形结构的压栈和出栈的操作.输出还是先入后出FILO

*/

#include <iostream>

using namespace std;

void move(char a,char b);

void hano(int n, char a ,char b,char c);

 

int main()

{

int m;

cin>>m;

hano(m,'a','b','c');

return 0;

}

void move(char a,char b)

{

cout<<a<<"-->"<<b<<endl;

}

void hano(int n, char a ,char b,char c)

{

if(n == 1) move(a,c);

else

{

hano(n-1,a,c,b);

move(a,c);

hano(n-1,b,a,c);

}

 

}

原创粉丝点击