問 題
C 言語で記述された次の関数 func を引数 6 で呼び出したとき、func が呼び出される回数の合計はいくらか。
1.5
2.8
3.9
4.15
5.25
解 説
いきなり 引数 6 を考えるのではなく、n として小さな数から考えるとよいです。if のところが n ≧ 2 となっているので、不等式の最小値にあたる n = 2 の場合から考えます。
・n = 2 の場合
if の中身になり、1 を返しておしまいです。func が呼び出されるのは 1 回です。
・n = 3 の場合
if の不等式を満たさないので、else の中身に行って func(2),func(1) を呼び出します。func (2),func(1) は、これ以上 func を呼び出さず、1 を返しておしまいです。合計で 1 + 2 = 3 回です。
・n = 4 の場合
func(3),func(2) を呼び、func(3) は先程の n = 3 の場合なので、合計 3 回 func を呼び出します。従って、1 + 3 + 1 = 5 回です。
・n = 5 の場合
func(4),func(3) を呼びます。func(4),func(3) はそれぞれ n= 4,3 の場合なので、5 回、3 回 func を呼びます。従って、1 + 5 + 3 = 9 回です。
これをふまえ、n = 6 の場合を考えます。
func(5),func(4) を呼びます。それぞれ n = 5,4 の場合なので、9 回、5 回 func を呼びます。従って、1 + 9 + 5 = 15 回です。
以上より、正解は 4 です。
類題 H27 no37 再帰
https://yaku-tik.com/koumuin/h27-denjyou-37/
コメント