Given a positive number N, the task is to find the sum of the first (N + 1) Fibonacci Numbers.
Examples:
Input: N = 3
Output: 4
Explanation:
The first 4 terms of the Fibonacci Series is {0, 1, 1, 2}. Therefore, the required sum = 0 + 1 + 1 + 2 = 4.Input: N = 4
Output: 7
Naive Approach: For the simplest approach to solve the problem, refer to the previous post of this article.Â
Time Complexity: O(N)
Auxiliary Space: O(1)
Efficient Approach: The above approach can be optimized by the following observations and calculations:
Let S(N) represent the sum of the first N terms of Fibonacci Series. Now, in order to simply find S(N), calculate the (N + 2)th Fibonacci number and subtract 1 from the result. The Nth term of this series can be calculated by the formula:
Now the value of S(N) can be calculated by (FN + 2 – 1).
Therefore, the idea is to calculate the value of SN using the above formula:
Below is the implementation of the above approach:
C++
// C++ program for the above approach#include <bits/stdc++.h>using namespace std;Â
// Function to find the sum of// first N + 1 fibonacci numbersvoid sumFib(int N){       // Apply the formula    long num = (long)round(pow((sqrt(5) + 1)                                / 2.0, N + 2)                           / sqrt(5));Â
    // Print the result    cout << (num - 1);}Â
// Driver Codeint main(){Â Â Â Â int N = 3;Â Â Â Â sumFib(N);Â Â Â Â return 0;}Â
// This code is contributed by Dharanendra L V. |
Java
// Java program for the above approachimport java.io.*;Â
class GFG {Â
    // Function to find the sum of    // first N + 1 fibonacci numbers    public static void sumFib(int N)    {        // Apply the formula        long num = (long)Math.round(            Math.pow((Math.sqrt(5) + 1)                         / 2.0,                     N + 2)            / Math.sqrt(5));Â
        // Print the result        System.out.println(num - 1);    }Â
    // Driver Code    public static void main(String[] args)    {        int N = 3;        sumFib(N);    }} |
Python3
# Python program for the above approachimport mathÂ
# Function to find the sum of# first N + 1 fibonacci numbersdef sumFib(N):       # Apply the formula    num = round(pow((pow(5,1/2) + 1) \                    / 2.0, N + 2) \                / pow(5,1/2));Â
    # Print the result    print(num - 1);Â
# Driver Codeif __name__ == '__main__':Â Â Â Â N = 3;Â Â Â Â sumFib(N);Â
# This code is contributed by 29AjayKumar |
C#
// C# program for the above approachusing System;class GFG{Â
    // Function to find the sum of    // first N + 1 fibonacci numbers    public static void sumFib(int N)    {        // Apply the formula        long num = (long)Math.Round(            Math.Pow((Math.Sqrt(5) + 1)                         / 2.0,                     N + 2)            / Math.Sqrt(5));Â
        // Print the result        Console.WriteLine(num - 1);    }Â
// Driver Codestatic public void Main(){Â Â Â Â Â Â Â Â int N = 3;Â Â Â Â Â Â Â Â sumFib(N);}}Â
// This code is contributed by jana_sayantan. |
Javascript
<script>Â
// Javascript program for the above approachÂ
    // Function to find the sum of    // first N + 1 fibonacci numbers    function sumFib(N)     {        // Apply the formula        var num = Math.round(Math.pow((Math.sqrt(5) + 1)        / 2.0, N + 2) / Math.sqrt(5));Â
        // Print the result        document.write(num - 1);    }Â
    // Driver Code             var N = 3;        sumFib(N);Â
// This code contributed by umadevi9616Â
</script> |
4
Â
Time Complexity: O(log n)
Auxiliary Space: O(1)
Alternate Approach: Follow the steps below to solve the problem:
- The Nth Fibonacci number can also be calculated using the generating function.
- The generating function for the Nth Fibonacci number is given by:
- Therefore, the generating function of the sum of Fibonacci numbers is given by:
- After partial fraction decomposition of G'(X), the value of G'(X) is given by:
where,Â
- Therefore, the formula for the sum of the Fibonacci numbers is given by:
Below is the implementation of the above approach:
C++
// C++Â program for the above approach#include <bits/stdc++.h>using namespace std;Â
// Function to find the sum of// first N + 1 fibonacci numbersvoid sumFib(int N){     // Apply the formula  double num = (1 - sqrt(5)) / 2;Â
  long val = round(    abs(1        / (pow(num, N + 2)           + pow(num, N + 1)           + pow(num, N)           + pow(num, N - 1)))    - 1);Â
  // Print the result  cout<<val;}Â
// Driver Codeint main() {Â Â Â Â int N = 3;Â
      // Function Call    sumFib(N);}Â
// This code is contributed by 29AjayKumar |
Java
// Java program for the above approachimport java.io.*;Â
class GFG {Â
    // Function to find the sum of    // first N + 1 fibonacci numbers    public static void sumFib(int N)    {        // Apply the formula        double num = (1 - Math.sqrt(5)) / 2;Â
        long val = Math.round(            Math.abs(1                     / (Math.pow(num, N + 2)                        + Math.pow(num, N + 1)                        + Math.pow(num, N)                        + Math.pow(num, N - 1)))            - 1);Â
        // Print the result        System.out.println(val);    }Â
    // Driver Code    public static void main(String[] args)    {        int N = 3;Â
        // Function Call        sumFib(N);    }} |
Python3
# Python3 program for the above approachimport mathÂ
# Function to find the sum of# first N + 1 fibonacci numbersdef sumFib(N):         # Apply the formula    num = (1 - math.sqrt(5)) / 2Â
    val = round(abs(1 / (pow(num, N + 2) +                         pow(num, N + 1) +                         pow(num, N) +                         pow(num, N - 1))) - 1)Â
    # Print the result    print(val)Â
# Driver Codeif __name__ == '__main__':Â
    N = 3Â
    # Function Call    sumFib(N)Â
# This code is contributed by Surbhi Tyagi. |
C#
// C# program for the above approachÂ
Â
using System;Â
public class GFG {Â
    // Function to find the sum of    // first N + 1 fibonacci numbers    public static void sumFib(int N)    {        // Apply the formula        double num = (1 - Math.Sqrt(5)) / 2;Â
        double val = Math.Round(            Math.Abs(1                     / (Math.Pow(num, N + 2)                        + Math.Pow(num, N + 1)                        + Math.Pow(num, N)                        + Math.Pow(num, N - 1)))            - 1);Â
        // Print the result        Console.WriteLine(val);    }Â
    // Driver Code    public static void Main(String[] args)    {        int N = 3;Â
        // Function Call        sumFib(N);    }}Â
// This code is contributed by 29AjayKumar |
Javascript
<script>Â
// Javascript program for the above approachÂ
    // Function to find the sum of    // first N + 1 fibonacci numbers    function sumFib(N) {        // Apply the formula        var num = ((1 - Math.sqrt(5)) / 2);Â
        var val = Math.round(            Math.abs(1                     / (Math.pow(num, N + 2)                        + Math.pow(num, N + 1)                        + Math.pow(num, N)                        + Math.pow(num, N - 1)))            - 1);Â
        // Print the result        document.write(val);    }Â
    // Driver Code             var N = 3;Â
        // Function Call        sumFib(N);Â
// This code is contributed by todaysgaurav Â
</script> |
4
Â
Time Complexity: O(log n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

