Hanoi塔 递归解
当A柱有n个圆盘时,移动次数为 2n_1
1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 void Hanoi(int, string, string, string);
6
7 int main()
8 {
9 Hanoi(3, "A", "B", "C");
10 //cout << cnt << endl;
11
12 return 0;
13
14 }
15
16 void Hanoi(int n, string A, string B, string C)
17 {
18 if( n == 1)
19 {
20 cout << A << " -> " << C << endl;
21 cnt++;
22 }
23 else
24 {
25
26 Hanoi(n - 1, A, C, B);
27 cout << A << " -> " << C << endl;
28 Hanoi(n - 1, B, A, C);
29 }
30 }
2 #include <string>
3 using namespace std;
4
5 void Hanoi(int, string, string, string);
6
7 int main()
8 {
9 Hanoi(3, "A", "B", "C");
10 //cout << cnt << endl;
11
12 return 0;
13
14 }
15
16 void Hanoi(int n, string A, string B, string C)
17 {
18 if( n == 1)
19 {
20 cout << A << " -> " << C << endl;
21 cnt++;
22 }
23 else
24 {
25
26 Hanoi(n - 1, A, C, B);
27 cout << A << " -> " << C << endl;
28 Hanoi(n - 1, B, A, C);
29 }
30 }
结论: n个盘子的移动次数为2n-1