Die ersten beiden Antworten (ältesten) sind scheinbar falsche mir. Gemäß dieser discussion, die bereits in einer der Antworten zitiert wird, wird durch Summe der ersten n
Fibonacci-Zahlen gegeben:
SumFib(n) = F[n+2] - 1 (1)
Nun lässt m
-n
inklusiveSumFib(m, n)
als Summe der Fibonacci-Zahlen definieren (wie benötigt von OP). Also:
SumFib(m, n) = SumFib(n) - SumFib(m-1)
Beachten Sie den zweiten Begriff. Es ist so, weil SumFib(m)
F[m]
enthält, aber wir wollen Summe von F[m]
bis F[n]
einschließlich. Also subtrahieren wir die Summe bis F[m-1]
von der Summe bis F[n]
. Einfacher Kindergarten Mathe, nicht wahr?:-)
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)
Beispiel:
m = 3, n = 7
Sum = F[3] + F[4] + F[5] + F[6] + F[7]
= 2 + 3 + 5 + 8 + 13
= 31
Und durch die Verwendung (2)
oben abgeleitet:
SumFib(3, 7) = F[7+2] - F[3+1]
= F[9] - F[4]
= 34 - 3
= 31
Bonus:
Wenn m
und n
groß sind, benötigen Sie eine effiziente Algorithmen zur Erzeugung von Fibonacci-Zahlen. Hier ist eine sehr gute article, die eine Möglichkeit erklärt, es zu tun.
I wäre sehr glücklich, die Anwendung dieser Antwort zu kennen! – rjobidon
Ich denke, wir haben dich lange genug geneckt, insbesondere mit dem Hinweis auf Binet (stattdessen solltest du lineare Algebra verwenden, wie in deiner Frage angedeutet). Passen Sie auch auf, dass 'F (m + 2) - F (n + 2) - 2 'nicht ganz korrekt ist, aber Sie können es herausfinden, da die Summe von fibo # zu n effektiv F (n + 2) ist - 1 (Hinweis: Sie wollen die Summe _inclusive_ von F (n) und daher müssen Sie die Summe von fibo # bis zu 'n-1' und _substract_ von F (m + 2) -2) subtrahieren. Wie auch immer ... es sieht und riecht wie 'HOMEWORK', die SO-Community sollte nicht zu viel helfen ;-) – mjv
@mjv - es riecht nach Coding-Konkurrenzproblem für mich – Attila