プログラミングの基礎(擬似言語のトレース)
次の関数 s を s(7) として呼び出したときの戻り値はどれか。
○整数型: s(整数型: n)
if (n ≦ 0)
return 0
endif
return n + s(n − 2)
- A15
- B16
- C28
答えと解説を見る
正解:B. 16
s(7) は 7 + s(5) を、s(5) は 5 + s(3) を、s(3) は 3 + s(1) を、s(1) は 1 + s(−1) を求めようとして順に呼び出し、s(−1) は n ≦ 0 なので0を返します。呼出し元に戻りながら足し合わされて、s(7) = 7 + 5 + 3 + 1 + 0 = 16 になります。7以下の正の奇数の和です。
- A. n ≦ 1 で0を返すとした場合の 7 + 5 + 3 の値です。実際には s(1) は 1 + s(−1) = 1 を返します。
- B. 正しい。7 + 5 + 3 + 1 = 16 です。
- C. s(n − 1) を呼ぶとした場合の 7 + 6 + … + 1 の値です。