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

令和元年度 秋期 午前 問11

アルゴリズム

再帰に関する問題

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

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

✓ これが正解ウ15

解説

1から5までの足し合わせになるので、15になります。

この関数は自分自身を呼び出す形、つまり再帰で定義されています。渡された値が1以下なら1を返して止まり、そうでなければ、いまの値に、一つ小さい値で呼び出した結果を足して返します。5を渡すと、5に対して4での結果を足す形になります。その4での結果は、4に3での結果を足したものです。同じように下りていくと、2まで来たところで1での結果が1と決まり、そこで折り返します。折り返したら、下から順に足し戻していくだけです。結局は5と4と3と2と1をすべて足すことになり、合計は15になります。どこで止まるかを先に押さえてしまえば、あとは単なる足し算に変わります。止まる条件を読み落とすと、下り続けて答えが出なくなります。止まる条件は、必ず最初に読んでおきます。呼び出しの深さを図に描くと確実です。

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

出典:令和元年度 秋期 基本情報技術者試験 午前 問11

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