递归算法示例——汉诺塔问题

将X塔座上的n个圆盘移到塔座Y上,并按同样的顺序叠排

(1)以塔座Y为中介,将X上的n-1个圆盘移到Z上;

(2)将第n个移到Y塔座上;

(3)以塔座X为中介,将Z上的n-1个圆盘移到Y上;



#include<iostream>
using namespace std;

enum tower{A='X',B='Y',C='Z'};

void move(int n,tower x,tower y){ 
cout<<"The disk"<<n<<" is moved from "<<char(x)<<" to top of tower "<<char(y)<<endl;

}

void Hanoi(int n,tower x,tower y,tower z){ 
if(n){
Hanoi(n-1,x,z,y);
move(n,x,y);
Hanoi(n-1,z,y,x);
}
}  

int main(){
int n;
scanf("%d",&n);
Hanoi(n,A,B,C);
return 0;
}

递归算法示例——汉诺塔问题


/我是编程小白,只是想想学习一下编程,欢迎指出错误。