Las primeras dos respuestas (las más antiguas) son aparentemente incorrecta a mí. De acuerdo con este discussion que ya se cita en una de las respuestas, la suma de los primeros n
números de Fibonacci viene dada por:
SumFib(n) = F[n+2] - 1 (1)
Ahora, vamos a definir SumFib(m, n)
como la suma de los números de Fibonacci m
-n
incluido (como se requerido por OP). Entonces:
SumFib(m, n) = SumFib(n) - SumFib(m-1)
Tenga en cuenta el segundo término. Es así porque SumFib(m)
incluye F[m]
, pero queremos suma de F[m]
a F[n]
inclusive. Así que restamos suma hasta F[m-1]
de suma hasta F[n]
. Las matemáticas simples de kínder, ¿no?:-)
SumFib(m, n) = SumFib(n) - SumFib(m-1)
= (F[n+2] - 1) - (F[m-1 + 2] - 1) [using eq(1)]
= F[n+2] - 1 - F[m+1] + 1
= F[n+2] - F[m+1]
Therefore, SumFib(m, n) = F[n+2] - F[m+1] (2)
Ejemplo:
m = 3, n = 7
Sum = F[3] + F[4] + F[5] + F[6] + F[7]
= 2 + 3 + 5 + 8 + 13
= 31
Y mediante el uso (2)
derivado anteriormente:
SumFib(3, 7) = F[7+2] - F[3+1]
= F[9] - F[4]
= 34 - 3
= 31
Bono:
Cuando m
y n
son grandes, es necesario eficiente algoritmos para generar números de Fibonacci. Aquí hay una muy buena article que explica una forma de hacerlo.
I estaría muy feliz de saber la aplicación de esta respuesta! – rjobidon
Creo que te hemos molestado lo suficiente, en particular con la pista sobre Binet (en su lugar, debes usar el álgebra lineal como se insinuó en tu pregunta). También ten en cuenta que '' F (m + 2) - F (n + 2) - 2' no es del todo correcto, pero puedes averiguarlo dado que la suma de fibo # a n es efectivamente F (n + 2) - 1 (sugerencia: quiere la suma _inclusive_ de F (n) y, por lo tanto, necesita restar la suma de fibo # hasta 'n-1' y _substract_ this de F (m + 2) -2). De todos modos ... parece y huele a 'HOMEWORK', la comunidad SO no debería ayudar demasiado ;-) – mjv
@mjv - huele como un problema de competencia de codificación – Attila