問題
次の擬似言語プログラムで、関数doubleSum(arr)はどんな結果を返すか。 ○ 整数型: doubleSum(整数型の配列: arr) 整数型: sum ← 0 整数型: i for (i を 0 から arr の要素数−1 まで 1 ずつ増やす) sum ← sum + arr[i] × 2 endfor return sum
選択肢
- 1ア 配列の要素の合計
- 2イ 配列の要素の平均
- 3ウ 配列の要素の合計の2倍
- 4エ 配列の要素の最大値の2倍
正解
3. ウ 配列の要素の合計の2倍
詳しい解説を見る解説を閉じる
解説
正解はウ。ループの中身はsum←sum+arr[i]×2であり、各要素を2倍してから累積加算している。数式で表すとΣ(2×arr[i])=2×Σarr[i]となるため、戻り値は「配列の要素の合計の2倍」である。例えば[1,2,3]なら2+4+6=12となり、合計6の2倍に一致する。アの「要素の合計」は×2の部分を見落とした場合の誤りである。イの「平均」を求めるには合計を要素数で割る処理(sum/要素数)が必要だが本問には存在しない。エの「最大値の2倍」を求めるにはif文による比較・更新の処理が必要だが、本問は無条件に加算しているため誤りである。科目Bでは、コードを読んで「何を計算する関数か」を一般化して言い当てる出題が多く、ループ内の式を数学的に整理して考える練習が有効である。
一問一答
科目A 180問+科目B 60問