我正在进行一个小测验,似乎很难理解一个特别的问题。
(a) 20项增加(c) 5项增列(b) 13项增列(d) 18项
答: a)增加20项
我不太明白他们怎么会增加20个。有没有一种快速的方法可以找到斐波纳契序列的递归程序的加法?我尝试通过c++中的递归代码进行跟踪,我在网上找到了这些代码,但我不确定哪些是添加步骤。
我只是在找一个关于如何得到答案的解释。我很感谢你的帮助。
发布于 2014-10-19 20:40:02
用n个数字所需的加法数制作一个小表格.当你计算f(x)为f(x-1) + f(x-2)时,你需要加法来计算f(x-1)和f(x-2)的加法,以及这两个数之和的加法。
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)发布于 2014-10-19 20:49:53
简单的递归公式如下所示:
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 ...and添加+符号。
另外,请注意,递归公式的每一步都以F( 1 )和或F(0)结尾,每一步都有值1。因此,对于任何n> 1,(在展开公式之后),您将得到足够的1's之和,从而生成F(n)。因此,朴素递归公式总是需要F(n)-1加法(因此,在F(7)=21,即20加法的情况下)。
发布于 2022-03-13 19:49:39
您可以用一个封闭的公式快速计算这一点,该公式要求所有n>0的当前和以前的斐波那契数。
S(n) = F(n-1) + F(n) -1其中Sn是第n项的加法数,F(n)和F(n-1)是nth和nth-1 Fibonacci数。
例如:
S(10) = F(9) + F(10) -1
S(10) = 34 + 55 - 1
S(10) = 88https://stackoverflow.com/questions/26455087
复制相似问题