過去問解きまくり研究所 ホーム

平成30年度 春期 午前 問5

基礎理論

再帰に関する問題

非負の整数 m,n に対して次のとおりに定義された関数 Ack(m, n) がある。Ack(1, 3) の値はどれか。

条件Ack(m, n) の値
m>0 かつ n>0 のときAck(m-1, Ack(m, n-1))
m>0 かつ n=0 のときAck(m-1, 1)
m=0 のときn+1
答えと解説を見る

✓ これが正解ウ5

解説

内側から順に展開すると Ack(1, 3) は 5 になります。

設問は、非負の整数 m と n について三通りに場合分けされた関数について、Ack(1, 3) の値を求めさせています。再帰の問題で迷わない手順は、まず止まる条件を書き出し、次に内側から順に潰し、最後に外へ戻すことです。止まる条件は m が 0 のときで、そのとき値は n に 1 を足したものになります。Ack(1, 3) は m も n も 0 より大きいので Ack(0, Ack(1, 2)) となり、同じ形をたどって Ack(1, 2)、Ack(1, 1)、Ack(1, 0) へ降りていきます。Ack(1, 0) は n が 0 の場合に当たるので Ack(0, 1) となり、その値は 2 です。ここから外へ戻すと Ack(1, 1) が 3、Ack(1, 2) が 4、そして Ack(1, 3) が 5 と求まります。並びを見ると Ack(1, n) は n に 2 を足した値になっており、n が 3 のときに 5 となることが検算としても確かめられます。

ほかの選択肢はなぜ違うのか

出典:平成30年度 春期 応用情報技術者試験 午前 問5(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)