我一直在为我的ComSci课程做一些过去的论文,我在理解这个问题时遇到了一些麻烦:
“定义一个递归关系,表示使用以下函数查找第n个Fibonacci数所涉及的调用次数:”
def f(n):
if n == 1 or n == 2:
return 1
else:
return f(n - 1) + f(n - 2)
我理解函数如何工作f(1),f(2)需要1个调用f(3)需要3,f(4)需要5等...但是,我不知道如何接近这个问题。
感谢阅读:)
答案 0 :(得分:1)
问题要求您解释基于n对f进行多少次调用。说“定义递归关系”的部分实际上是对你答案的暗示。
所以你的答案看起来像是:
Let T(x) be the function which defines the number of calls to compute f(x)
Then:
T(n) = { something using T and values less than n }
如果你想弄明白这一点 - 停在这里,Spoilers跟随(所以你的问题完全得到了解答)。
---------------------------------- Spoiler -------------------------------
n=1: T(1) = 1
n=2: T(2) = 1
n>2: T(n) = 1 + T(n - 1) + T(n - 2)
--------------------------------- End Spoiler ------------------------------