基本情報技術者試験「ループ」の問題
次の擬似言語の内側の文「cnt ← cnt + 1」が実行される回数はどれか。
○整数型: count()
整数型: cnt ← 0
整数型: i, j
for (i を 1 から 5 まで 1 ずつ増やす)
for (j を i から 5 まで 1 ずつ増やす)
cnt ← cnt + 1
endfor
endfor
return cntア5 回
イ150 回
ウ25 回
エ15 回
正解
エ.15 回
内側 for の開始が j=i のため、i が増えるほど回数が減る。i=1〜5 でそれぞれ 5,4,3,2,1 回となり合計 15 回であるため エが正しい。
?選択肢ごとの解説
ア ×外側ループの回数 5 だけを数え、内側の繰り返しを集計しなかった誤りである。
イ ×実行回数 15 の桁を取り違え、または余分に 10 倍して 150 回とした桁の誤りである。
ウ ×内側ループを常に 1 から 5 まで(j=1 開始)と誤読し 5×5=25 とした、開始値 j=i の見落としである。
エ ○内側 for の開始が j=i のため、i が増えるほど回数が減る。i=1〜5 でそれぞれ 5,4,3,2,1 回となり合計 15 回であるため エが正しい。
✎くわしく
内側ループの開始値が外側変数 i に依存する三角形状のループでは、実行回数は等差数列 n+(n-1)+…+1 となる。各 i での内側回数を個別に数えて合算する必要がある。
✓本番での押さえどころ
試験のコツ
i ごとに『内側が何回回るか』を縦に書き出し、最後に合計する。
覚え方
『三角ループは 1 から n の和』=n(n+1)/2 と関連づける(5×6/2=15)。
よくある誤り
内側の開始値を固定と勘違いし n×n と数えるミスが最も多い。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008,…次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1…次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10,…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…スタックに対する push(積む)と…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0012