平成30年 春期 応用情報技術者 午前 問5

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

 ア  3  イ  4  ウ  5  エ  6


答え ウ


解説
Ack(1, 3)を定義通りに解いていく  Ack(1, 3)=Ack(1-1, Ack(1, 3-1)
 =Ack(0, Ack(1, 2))=Ack(0, Ack(1-1, Ack(1, 2-1)))
 =Ack(0, Ack(0, Ack(1, 1))=Ack(0, Ack(0, Ack(1-1, Ack(1, 1-1))))
 =Ack(0, Ack(0, Ack(0, Ack(1, 0))))=Ack(0, Ack(0, Ack(0, Ack(1-1, 1))))
 =Ack(0, Ack(0, Ack(0, Ack(0, 1))))=Ack(0, Ack(0, Ack(0, 2)))
 =Ack(0, Ack(0, 3)=Ack(0, 4)=5
(ウ)になる。


キーワード
・再帰呼び出し

キーワードの解説
  • 再帰呼び出し(recursive call、リカーシブコール)
    手続き(関数)の中で、再び自身の手続きを呼び出すことです。
    階乗の計算(Fn=n×Fn-1)や、フィボナッチ数(Fn=Fn-1+Fn-2)のようなアルゴリズム(再帰アルゴリズムといいます。)をプログラミングするのに適しています。
    ただし、再帰呼び出しをプログラミングするときには、再帰が行われる度にスタックを消費するので、スタックの容量に注意する必要があります。

もっと、「再帰呼び出し」について調べてみよう。

戻る 一覧へ 次へ