過去問解きまくり研究所 ホーム

平成27年度 秋期 午前 問8

アルゴリズム

再帰に関する問題

自然数 n に対して,次のとおり再帰的に定義される関数 f(n) を考える。f(5) の値はどれか。

f(n): if n≦1 then return 1 else return n + f(n−1)
答えと解説を見る

✓ これが正解ウ15

解説

5から1まで足し合わせるので、答えは15です。

この定義は、自分自身を呼び出す再帰の形で書かれています。引数が1以下なら1を返し、そうでなければ引数と、1つ小さい引数での値とを足します。ですから中身をたどると、引数を1ずつ減らしながら足し算が積み重なる形になります。検算は展開するだけです。f(5)は5とf(4)の和、f(4)は4とf(3)の和、f(3)は3とf(2)の和、f(2)は2とf(1)の和で、f(1)は1です。順に戻していくと、5と4と3と2と1をすべて足した形になり、値は15です。見る軸は2つです。1つ目は、どこで呼び出しが止まるかという条件。2つ目は、止まった後に何が積み上がるかです。この2点を押さえれば、途中で数え終えることも、演算を取り違えることもなくなります。

ほかの選択肢はなぜ違うのか

出典:平成27年度 秋期 基本情報技術者試験 午前 問8

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)