ZeroJudge E357: 遞迴函數練習

定義一個函數 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)。
62

解題思路

本題可以寫一個遞迴函式終止的條件是當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

發佈留言