📅  最后修改于: 2023-12-03 15:12:36.062000             🧑  作者: Mango
本题是GATE CS 2011的第8题,主要考察了程序员对于数据结构和算法的理解与应用。题目如下:
给定下面的公式:
F(n) = (n > 100) ? n-10 : F( F(n+11) )
问题:当
F(87)
被调用时,会输出什么?
这个问题其实就是一个递归函数的问题。这个函数的定义如下:
def F(n):
if n > 100:
return n - 10
else:
return F( F(n + 11) )
当 n > 100
时,直接返回 n - 10
。否则,再次调用 F(n+11)
,并将其返回值作为函数参数再次调用 F()
,直到 n > 100
。
所以,当 F(87)
被调用时,会依次发生以下的递归调用:
F(87) -> F(F(98)) -> F(F(F(109))) -> F(F(99)) -> F(F(F(110))) -> F(F(100)) -> F(91) -> F(F(102)) -> F(F(F(113))) -> F(F(103)) -> F(F(F(114))) -> F(F(104)) -> F(95) -> F(F(106)) -> F(F(F(117))) -> F(F(107)) -> F(F(F(118))) -> F(F(108)) -> 98
也就是说,F(87)
的返回值为 98
。
当 F(87)
被调用时,会输出 98
。