本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和7年度 技術士第一次試験問題【専門科目】

V−7

Pythonで関数fを次のように定義するとき、関数呼び出しf(1、3)の返す値として、最も適切なものはどれか。
def f(m,n):
 if m == 0:
  return n+1
 elif n == 0:
  return f(m-1, 1)
 else:
  return f(m-1、f(m、n-1))

@ 5  A 6  B 7  C 8  D 9 


正解

@


解説

f(m, n) は
mが0なら、n+1を返す。
nが0なら、再帰的に関数f(m-1, 1)を呼び出し、結果を返す。
mもnも0でないなら、再帰的に関数 f(m-1, f(m, n - 1))を呼び出し、結果を返す。ただし、f(m, n - 1)が値を返してから、関数 f(m-1, f(m, n - 1))を呼び出す。

計算過程は以下のとおりである。

= f(0, f(0, f(1-1, f(1, 1-1))))
= f(0, f(0, f(0, f(1, 0))))
= f(0, f(0, f(0, f(1-1, 1))))
= f(0, f(0, f(0, f(0, 1))))
= f(0, f(0, f(0, 2)))
= f(0, f(0, 3))
= f(0, 4)
= 5

f(1,3) = f(1-1, f(1,3-1)) = f(0,f(1,2))
= f(0,f(1-1, f(1,2-1))) = f(0, f(0,f(1,1)))
= f(0, f(0,f(1-1, f(1,1-1))))
= f(0, f(0, f(0,f(1, 0))))
= f(0, f(0, f(0,f(1-1, 1))))
= f(0, f(0, f(0,f(0,1))))
= f(0, f(0, f(0,1+1)))
= f(0, f(0,f(0, 2)))
= f(0, f(0,2+1))
= f(0,f(0, 3))
= f(0,3+1) = f(0, 4) = 4+1
5

V−6 目次 V−8