递归实现主要使用函数和分支语句,最重要的思想是区分清楚基例和链条两个部分,类似于数学里面的数学归纳法。
C++实现:
#include <iostream>
using namespace std;
void hanoi(int N,char source,char relay,char destination){ //递归函数的定义
if(N==1) //递归终结条件:N==1
cout<<source<<"->"<<destination<<endl; //直接把这个盘子从source移动到destination
else{
hanoi(N-1,source,destination,relay); //先把上面N-1个盘子移到relay
cout<<source<<"->"<<destination<<endl;
hanoi(N-1,relay,source,destination);
}
}
int main(){
int n;
cout<<"请输入汉诺塔的层数: ";
cin>>n;
hanoi(n,'A','B','C'); //调用递归函数将n个盘子从A转移到C (借助B)
return 0;
}