刚入门算法,首先接触到的就是递归。在网上查了一下,几乎都说递归特别简单,弄得我心里慌得不得了,我就在想:为什么我感觉递归总是不懂,这感觉不对劲啊!但也没过分追求,不懂就不懂吧,回头再说。今天有空,就把这个当初看到的汉诺塔问题写一下,总结总结,问题什么的就不多说了,直接上代码(这代码是借鉴别人的)。
#include <iostream>
using namespace std;
int m = 0; //标记移动次数
void move(int disks, char N, char M)
{
cout<<"第" << (++m) << " 次移动 : " << " 把 " << disks << " 号圆盘从 " << N << " ->移到-> " << M<<endl;
}
void hanoi(int n, char A, char B, char C) //n为汉诺塔的个数,A,B,C分别为三个塔
{
if (n == 1)
move(1, A, C); //圆盘只有一个时,只需将其从A塔移到C塔
else
{
hanoi(n - 1, A, B, C);
move(n, A, B);
hanoi(n - 1, B, C, A);
}
}
int main()
{
char A = 'A&#