定義一個函數 F(x)
若 x = 1,則 F(x) = 1
若 x 為偶數,則 F(x) = F(x/2)
其餘狀況,F(x) = F(x – 1) + F(x + 1)
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入只有一行,其中包含一個正整數 x (1 <= x <= 2000000)。 | 輸出只有一行,其中包含一個正整數 F(x)。 |
6 | 2 |
解題思路
本題可以寫一個遞迴函式,終止的條件是當N = 1時就 return N,然後將偶數及奇數的判斷式寫好然後 cout遞迴(N) 就可以了。
範例程式碼-ZeroJudge E357: 遞迴函數練習
#include <iostream>
using namespace std;
int calc (int N)
{
if (N == 1) return 1;
if (N % 2 == 0) return calc(N/2);
else return calc(N-1)+calc(N+1);
}
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
cout << calc(N) << endl;
}
//ZeroJudge E357
//Dr. SeanXD