基本情報技術者試験 令和元年度 秋季 午前 問11
--------------------------
令和元年度 秋期 午前 問11
自然数 n に対して、次の通り再帰的に定義される関数 を考える。 の値はどれか。
: if n ≦ 1 then return 1 else return
ア 6
イ 9
ウ 15
エ 25
--------------------------
解説
再帰的に定義される関数については以下で書いてみている。
再帰(さいき)とは、ある記述をする際に、その記述の中に自身への参照が含まれていること。
: if n ≦ 1 then return 1 else return
一行で書くとわかりにくいので、少し工夫して、プログラムみたく改行とインデントを加えてみる。
:
if n ≦ 1
then
return 1
else
return
n が 1 以下のときは 1 を返し、そうでないときは を返すということ。
問題としては を聞いているので、 の定義に従うと以下のようになる。
=
=
=
=
=
=
=
=
= f(1) は n ≦ 1 のときなので 1 になる
=
となるので、正解は選択肢ウの 15。
計算の途中を見ての通り、この関数は n 以下の正の整数の和を求めている。
等価な数式にするとこんな感じ。
ちなみに問題では自然数 n と書いているが、自然数には 0 を含まない流儀と含む流儀がある。
- 0 を含まない流儀の場合は、ここまでの話に問題はない。
- 0 を含む流儀の場合は、ちょっと問題が起きてくる。
問題の では n ≦ 1 で return 1 なので、 になる。
一方で、
では とはならないので、等価な数式ではなくなってしまう。
勝手に等価な数式は~とか言い出して、勝手に問題が~とか言っているだけなのでどうでもいいことではあるけれど。
関数は定義域もちゃんと意識しましょう、という話でした。
前後の問題はこちら。