小玉米學編程:東方博弈1223 漢諾塔問題 C

2024年2月6日 19点热度 0人点赞

【東方博弈】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;

}