けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 273 A - A Recursive Function (7Q, 灰色, 100 点)

再帰関数の練習とも言える問題。問題文に書いてある通りに実装すればよい。

問題概要

非負整数  x に対して定義される関数  f(x) は次のように定義される。

  •  f(0) = 1
  •  k \ge 1 のとき、 f(k) = k \times f(k-1)

非負整数値  N が与えられるので、 f(N) の値を求めよ。

制約

  •  0 \le N \le 10

考えたこと

この問題は再帰関数と呼ばれるものを題材としている。

qiita.com

ただし、再帰関数の知識がなくても、問題文に書いてある通りに実装すれば AC となる。関数  f(x) は次のように実装できる(C++)。

int f(int k) {
    if (k == 0) return 1;
    else return k * f(k - 1);
}

この関数  f(x) を用いて、 f(N) の返り値を答えれば良い。

コード

#include <bits/stdc++.h>
using namespace std;

int f(int k) {
    if (k == 0) return 1;
    else return k * f(k - 1);
}

int main() {
    int N;
    cin >> N;
    cout << f(N) << endl;
}