基本情報技術者試験に挑戦しよう!「再帰」

コンピューター ITの基礎

現代はIT社会といえます。ITの仕組みを学びながらIT資格を目指しましょう。

本ブログで目指す資格は、「基本情報技術者試験」です。

基本情報技術者試験については、こちらもご参照ください。

問題については、独立行政法人情報処理推進機構(IPA)が公開している「サンプル問題」を利用します。
この問題の取り扱いは、IPAが定める指針に基づきます。

まずは、「科目A」について、学んでいきましょう。

「科目A」の試験範囲は広い

CBT試験になって、試験問題は公開されず、随時サンプル問題が公開されています。

出題分野は、「テクノロジー系」の出題が多く、「マネジメント系」、「ストラテジ系」の分野からも出題されています。

過去問を制する者は合格を制する

過去問は、現在、サンプル問題のみが公開されています。
科目Aの試験対策では、過去問を学習することが効果的です。
本ブログでは、サンプル問題を取り扱っておりますが、この中にも過去問で取り上げられた問題が含まれています。

科目A試験サンプル問題 「再帰」

問8 自然数n に対して,次のとおり再帰的に定義される関数 f (n) を考える。f (5) の
値はどれか。
f (n): if n≦1 then return 1 else return n + f (n-1)

ア 6 イ 9 ウ 15 エ 25

(類題)令和元年秋期 問11

正解:ウ

再帰的な関数

関数は、与えられた値をもとに、関数内の定められた処理を実行しえ、その結果を返す機能を持ったものです。再帰的な関数は、ある処理で求めた値に対して、さらに同じ処理を繰り返すようなときに、自分自身を呼び出すことにより、非再帰的な関数よりも簡潔に表現できます。

それでは、問題を検討しましょう。

設問は、nが1と同じか、小さいならを、そうでないならn + f(n-1)を返す関数です。

まず、n = 5 を代入し、f(1)に合致するまで計算します。

f(5) = 5 + f(5 – 1) = 5 + f(4) ①
f(4) = 4 + f(4 – 1) = 4 + f(3) ②
f(3) = 3 + f(3 – 1) = 3 + f(2) ③
f(2) = 2 + f(2 – 1) = 2 + f(1) ④
f(1) = 1 ⑤

⑤を④に代入します。
f(2) = 2 + 1 = 3 ⑥
⑥を③に代入します。
f(3) = 3 + 3 = 6 ⑦
⑦を②に代入します。
f(4) = 4 + 6 = 10 ⑧
⑧を①に代入します。
f(5) = 5 + 10 = 15
正解は、15となります

コメント

タイトルとURLをコピーしました