我正在进行一次抽样测验,似乎很难理解一个特定的问题。
(a)增加20个 (c)增加5个 (b)增加13项 (d)18个补充
答案:a)20个补充
我不太明白他们是如何得到20个补充的。有没有快速的方法来找到斐波纳契序列的递归程序的添加?我尝试在c中找到我在网上发现的递归代码,但我不确定我会考虑添加步骤。
我只是在寻找如何得出答案的解释。我将不胜感激任何帮助。
答案 0 :(得分:1)
天真的递归公式将类似于:
F(0) = 1
F(1) = 1
F(n) = F(n-1) + F(n-2)
所以看待它的一种方法就是做替换......
F(7) = F(6) + F(5)
= F(5) + F(4) + F(4) + F(3)
= F(4) + F(3) + F(3) + F(2) + F(3) + F(2) + F(2) + F(1)
= F(3) + F(2) + F(2) + F(1) + F(2) + F(1) + F(1) + F(0) + F(2) + F(1) + F(1) + F(0) + 1
= F(2) + F(1) + F(1) + F(0) + F(1) + F(0) + 1 + F(1) + F(0) + 1 + 1 + 1 + F(1) + F(0) + 1 + 1 + 1 + 1
= F(1) + F(0) + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
= 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
...并添加+符号。
或者,请注意,递归公式的每个步骤以F(1)和/或F(0)结束,并且每个步骤都具有值1.因此,对于任何n> 1,(在扩展公式之后)你将总计足够1来制作F(n)。因此,朴素递归公式将总是需要F(n)-1次加法(因此在F(7)= 21的情况下,即20次加法)。
答案 1 :(得分:0)
制作一张小表,其中包含第n个数字所需的添加数量。当你将数字f(x)计算为f(x-1)+ f(x-2)时,你需要增加来计算f(x-1)和f(x-2)的加法以及另外一个来计算f(x-1)这两个数字的总和。
n additions
0 0
1 0
2 1 (= n(0) + n(1) + 1)
3 2 (= n(1) + n(2) + 1)
4 4 (= n(2) + n(3) + 1)
5 7 (= n(3) + n(4) + 1)
6 12 (= n(4) + n(5) + 1)
7 20 (= n(5) + n(6) + 1)