【東方博弈】1223題, 漢諾塔問題, C 代碼解法。
/*
【題目描述】
漢諾塔的問題大傢都已經很熟悉了,有三個柱子,
每個柱子上有一些大小不一的金片,
要把金片從 A 柱移動到 C 柱,可以借助 B 柱,
請問 n 個金片的情況下,需要最少移動多少次?
輸入
輸入一個整數 n 代表金片的數量。
輸出
一個整數,代表 n 個金片的移動次數。
【參考樣例】
輸入:
3
輸出:
7
*/
這是C 學習中一道十分經典的遞歸求解的問題,通過整理遞歸過程來得到問題的解決。
代碼如下:
#include <bits/stdc .h>
using namespace std;
// 本題采用遞歸方式求解
int fun(int n){
// 遞歸結束條件,沒有會導致死循環
if (n == 1){
return 1;
}else{
return fun(n - 1) * 2 1;
}
}
int main() {
int n; // 有幾個金片
cin >> n;
cout << fun(n) << endl;
return 0;
}