FE SUBJECT B
基本情報技術者 科目Bの問題解説
問題
次のプログラムを実行したときの戻り値はどれか。
○整数型: calc(整数型: n)
if (n ≦ 1)
return 2
endif
return n + calc(n - 2)
calc(6)を呼び出す。- ア 12
- イ 14
- ウ 21
- エ 8
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲
正解と解説
正解:14
正解:14
見る場所:再帰呼出しがn-1ではなくn-2で進む点を見る。calc(6)は6,4,2,0の順に下がり,n≦1で2を返して止まる。
| 呼出し | 式 | 戻り値 |
|---|---|---|
| calc(0) | 停止条件 | 2 |
| calc(2) | 2 + calc(0) | 4 |
| calc(4) | 4 + calc(2) | 8 |
| calc(6) | 6 + calc(4) | 14 |
処理の追い方:停止条件のcalc(0)=2から戻り始め,calc(2)=4,calc(4)=8,calc(6)=14と積み上がる。
間違えやすい点:通常の1から6までの総和ではない。nを2ずつ減らすので,6+4+2に停止条件の2を足す。n=0の戻り値を0と見なすと12を選びやすい。
選択肢の見分け方:12は停止条件の2を足し忘れた値,21は1から6の総和を計算した値。
この問題について
公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。