基本情報技術者試験のサンプル問題(科目B)を解いてみよう。
今回のテーマは、「引数が配列である関数の処理」である。

正解:カ
この問題は、与えられた配列に対して関数 makeNewArray を適用したときに、戻り値の配列の 5番目の要素が何になるかを問うものである。
与えられた配列
{3, 2, 1, 6, 5, 4}
※ 要素番号は 1から始まると問題文に明記されている。(←注意)
関数 makeNewArray の処理内容を確認しよう!
- 初期化
- out ← {}(空の配列)
- out の末尾に in[1](= 3)を追加 → out = {3}(outの末尾に、引数で渡された整数型配列inの要素番号1の要素3を追加)
- ループ処理(i = 2 から in の要素数(=6)まで)(要素番号2からinの要素数6まで1ずつ増やす)
各ステップでの処理は、- tail ← out[outの要素数](変数tailに、配列outの末尾の要素を代入)
- out の末尾に (tail + in[i]) を追加する(outの末尾に、配列outの末尾の要素(tail)+引数の配列要素(in[i])の結果を追加)
処理をステップごとにトレースしよう!
初期状態
in = {3, 2, 1, 6, 5, 4}
out = {3}
i = 2
- tail = 3
- in[2] = 2
- 3 + 2 = 5 → out = {3, 5}
i = 3
- tail = 5
- in[3] = 1
- 5 + 1 = 6 → out = {3, 5, 6}
i = 4
- tail = 6
- in[4] = 6
- 6 + 6 = 12 → out = {3, 5, 6, 12}
i = 5
- tail = 12
- in[5] = 5
- 12 + 5 = 17 → out = {3, 5, 6, 12, 17}
i = 6
- tail = 17
- in[6] = 4
- 17 + 4 = 21 → out = {3, 5, 6, 12, 17, 21}
戻り値の配列 out の要素番号 5 の値は 17 である。
コメント