
基本情報技術者試験 令和8年度 公開問題 科目B、全6問のうちの問3。
出典:令和8年度 基本情報技術者試験 公開問題 科目B 問3(プログラムは原本の画像を文字に書き起こし、字下げは 1 段を空白 2 つで表した。空欄は[ ]で表した)
次の
関数 func1 に
○整数型: func1(整数型: n)if (nが2以下)return 1endifreturn 2 × func1(n - 2) + func1(n - 1)○整数型: func2(整数型: n)整数型の配列: data ← {1, 1, 1}整数型: i/* nが3より小さいときは繰返し処理を実行しない */for (iを3からnまで1ずつ増やす)data[1] ← data[2]data[2] ← data[3]data[3] ← [ ]endforreturn data[3]
- ア2 × data[1] + data[2]
- イ2 × data[2] + data[1]
- ウ2 × data[i - 1] + data[i - 2]
- エ2 × data[i - 2] + data[i - 1]
- オdata[3] + 2 × data[1] + data[2]
- カdata[3] + 2 × data[2] + data[1]
- キdata[3] + 2 × data[i - 1] + data[i - 2]
- クdata[3] + 2 × data[i - 2] + data[i - 1]
答えと解説を開く
正解はアです。
func1 は、
ほかの選択肢が違う理由
- イdata[2] を
2 倍しています。 data[2] は 1 つ前の 値なので、 2 つ前を 2 倍する 式に なりません。 n = 4 では {1, 3, 7} に なり、 5 と 合いません。 - ウdata の
要素数は 3 なので、 i が 5 以上に なると data[i - 1] が 配列の 外を 指します。 i は 回数を 数える 変数で、 箱の 番号では ありません。 - エウと
同じく、 i が 大きくなると data[i - 2] や data[i - 1] が 配列の 外を 指します。 - オ前の
data[3] の 値を 余分に 足しています。 data[3] は 送った あと data[2] にも 入っているので、 1 つ前の 値を 2 回足すことになります。 - カ前の
data[3] を 余分に 足し、 さらに 2 倍する 相手も 違います。 - キ前の
data[3] を 余分に 足し、 i を 箱の 番号に 使うので 配列の 外も 指します。 - ク前の
data[3] を 余分に 足し、 i を 箱の 番号に 使うので 配列の 外も 指します。
仕組み
再帰の
直前の