- 
问题描述
- 
假设有三个柱子A.B.C,N个盘子
 - 
每次只允许移动一个盘子
 - 
必须保证小盘子在大盘子之上
 - 
如何把所有盘子从A移到C?
 
 - 
 - 
理解过程(转化为递归问题)
- 
用C柱做过渡,将A柱上的n-1的盘子移到B上
 - 
从A柱上最下面的盘子直接移到C柱上
 - 
用A柱做过渡,将B柱上的n-1个盘子移到C上
 
 - 
 - 
算法实现
#include "iostream"  using namespace std;  void move(int x,char a,char b) { cout<<x<<"从"<<a<<"移到"<<b<<"\n"; }  void hanoi(int n,char x,char y,char z) { if(n==1) move(n,x,z); else { hanoi(n-1,x,z,y); move(n,x,z); hanoi(n-1,y,x,z); } }  int main(void) { int n; cin>>n; hanoi(n,'A','B','C');  return 0; } - 
 
来源:https://www.cnblogs.com/Mr-Peng/p/12155329.html