次のプログラム中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数func1に与える引数と、関数func2に与える引数とが同じとき、二つの関数は同じ値を返す。プログラムでは、配列の領域外を参照してはならないものとする。

再帰の反復化は直近数個の値を窓で持ち回る

頻出基本情報技術者試験2026年度 公開問題 科目B3/アルゴリズムとプログラミング / アルゴリズム

``` 〔プログラム〕 ○整数型: func1(整数型: n) if (nが2以下) return 1 endif return 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] ←      endfor return data[3] ```

選択肢

正解と解説

正解: 2 × data[1] + data[2]

func1 は「2つ前の値を2倍したものと1つ前の値の和」という漸化式です。func2 はこれを配列3要素の窓で置き換えており、繰返しの先頭で data[1]←data[2]、data[2]←data[3] とずらした直後は、data[1] が2つ前の値、data[2] が1つ前の値を保持しています。したがって空欄には 2 × data[1] + data[2] を入れれば func1 と同じ値が求まります。要素番号を i で参照する式は、data の要素数が3しかないため領域外参照になり使えません。

選択肢ごとの解説

出典:令和8年度 公開問題 基本情報技術者試験 科目B 問3(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。