Fibonacci Series - GeeksforGeeks (2024)

Last Updated : 29 Feb, 2024

Improve

Ever wondered about the cool math behind the Fibonacci series? This simple pattern has a remarkable presence in nature, from the arrangement of leaves on plants to the spirals of seashells. We’re diving into this Fibonacci Series sequence. It’s not just math, it’s in art, nature, and more! Let’s discover the secrets of the Fibonacci series together.

What is the Fibonacci Series?

The Fibonacci series is the sequence where each number is the sum of the previous two numbers of the sequence. The first two numbers of the Fibonacci series are 0 and 1 and are used to generate the Fibonacci series.

Fibonacci Series - GeeksforGeeks (1)

Fibonacci Series

How to Find the Nth term of Fibonacci Series?

In mathematical terms, the number at the nth position can be represented by:

Fn = Fn-1 + Fn-2

where, F0 = 0 and F1 = 1.

For example, Fibonacci series upto 10 terms is: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34

Program to print first N term of Fibonacci Series:

1. Print Fibonacci series using Recursion:

In this method, we will use a function that prints the first two terms, and the rest of the terms are then handled by the other function that makes use of a recursive technique to print the next terms of the sequence.

Below is the implementation of the above idea:

C++

// C++ Program to print the Fibonacci

// series using recursion

#include <iostream>

using namespace std;

// First two values

int prev1 = 1;

int prev2 = 0;

// Recursive function to print the

// fibonacci series

void fib(int n)

{

if (n < 3) {

return;

}

int fn = prev1 + prev2;

prev2 = prev1;

prev1 = fn;

cout << fn << " ";

return fib(n - 1);

}

// Function that handles the first two terms

// and calls the recursive function

void printFib(int n)

{

// When the number of terms is less than 1

if (n < 1) {

cout << "Invalid number of terms\n";

}

// When the number of terms is 1

else if (n == 1) {

cout << 0;

}

// When the number of terms is 2

else if (n == 2) {

cout << "0 1";

}

// Number of terms greater than 2

else {

cout << "0 1 ";

fib(n);

}

return;

}

// Driver code

int main()

{

int n = 9;

// Function call

printFib(n);

return 0;

}

 
 

Java

/*package whatever //do not write package name here */

import java.io.*;

public class FibonacciSeries {

// Recursive function to print the Fibonacci series

static void fib(int n, int prev1, int prev2) {

if (n < 3) {

return;

}

int fn = prev1 + prev2;

prev2 = prev1;

prev1 = fn;

System.out.print(fn + " ");

fib(n - 1, prev1, prev2);

}

// Function that handles the first two terms and calls the recursive function

static void printFib(int n) {

// When the number of terms is less than 1

if (n < 1) {

System.out.println("Invalid number of terms");

}

// When the number of terms is 1

else if (n == 1) {

System.out.println(0);

}

// When the number of terms is 2

else if (n == 2) {

System.out.println("0 1");

}

// Number of terms greater than 2

else {

System.out.print("0 1 ");

fib(n, 1, 0);

}

}

public static void main(String[] args) {

int n = 9;

// Function call

printFib(n);

}

}

// This code is contributed by guptapratik

 
 

Python3

# Recursive function to print the Fibonacci series

def fib(n, prev1, prev2):

if n < 3:

return

fn = prev1 + prev2

prev2 = prev1

prev1 = fn

print(fn, end=" ")

fib(n - 1, prev1, prev2)

# Function that handles the first two terms and calls the recursive function

def print_fib(n):

# When the number of terms is less than 1

if n < 1:

print("Invalid number of terms")

# When the number of terms is 1

elif n == 1:

print(0)

# When the number of terms is 2

elif n == 2:

print("0 1")

# Number of terms greater than 2

else:

print("0 1", end=" ")

fib(n, 1, 0)

# Driver code

if __name__ == "__main__":

n = 9

# Function call

print_fib(n)

 
 

C#

using System;

class Program

{

// First two values

static int prev1 = 1;

static int prev2 = 0;

// Recursive function to print the Fibonacci series

static void Fib(int n)

{

if (n < 3)

{

return;

}

int fn = prev1 + prev2;

prev2 = prev1;

prev1 = fn;

Console.Write(fn + " ");

Fib(n - 1);

}

// Function that handles the first two terms and calls the recursive function

static void PrintFib(int n)

{

// When the number of terms is less than 1

if (n < 1)

{

Console.WriteLine("Invalid number of terms");

}

// When the number of terms is 1

else if (n == 1)

{

Console.WriteLine(0);

}

// When the number of terms is 2

else if (n == 2)

{

Console.WriteLine("0 1");

}

// Number of terms greater than 2

else

{

Console.Write("0 1 ");

Fib(n);

}

}

// Driver code

static void Main()

{

int n = 9;

// Function call

PrintFib(n);

}

}

 
 

Javascript

// Recursive function to print the Fibonacci series

function fib(n, prev1, prev2) {

if (n < 3) {

return;

}

let fn = prev1 + prev2;

prev2 = prev1;

prev1 = fn;

process.stdout.write(fn + " ");

fib(n - 1, prev1, prev2);

}

// Function that handles the first two terms and calls the recursive function

function printFib(n) {

// When the number of terms is less than 1

if (n < 1) {

console.log("Invalid number of terms");

}

// When the number of terms is 1

else if (n === 1) {

console.log(0);

}

// When the number of terms is 2

else if (n === 2) {

console.log("0 1");

}

// Number of terms greater than 2

else {

process.stdout.write("0 1 ");

fib(n, 1, 0);

}

}

// Driver code

const n = 9;

// Function call

printFib(n);

 
 

Complexity Analysis:

  • Time complexity: O(n), It is because, for printing n terms,the fib() function will call itself recursively for (n – 2) times and each time it will take constant time.
  • Auxiliary Space: O(n), It is because, for each recursive call of the fib() function, a separate stack frame is created. For (n-2) calls, (n-2) stack frames are created with results in the O(n) space complexity.

2. Fibonacci series using loops

In this method, we use one of the C loops to iterate and print the current term. The first two terms, F1 and F2 are handled separately. After that, we use two variables to store the previous two terms and keep updating them as we move to print the next term.

Below is the implementation of the above idea:

C++

// C++ Program to print the fibonacci series

// using iteration (loops)

#include <iostream>

using namespace std;

// Function to print fibonacci series

void printFib(int n)

{

if (n < 1) {

cout << "Invalid Number of terms\n";

return;

}

// When number of terms is greater than 0

int prev1 = 1;

int prev2 = 0;

// For loop to print fibonacci series

for (int i = 1; i <= n; i++) {

if (i > 2) {

int num = prev1 + prev2;

prev2 = prev1;

prev1 = num;

cout << num << " ";

}

// For first two terms

if (i == 1) {

cout << prev2 << " ";

}

if (i == 2) {

cout << prev1 << " ";

}

}

}

// Driver code

int main()

{

int n = 9;

// Function Call

printFib(n);

return 0;

}

 
 

Java

public class FibonacciSeries {

// Function to print Fibonacci series

static void printFib(int n) {

if (n < 1) {

System.out.println("Invalid Number of terms");

return;

}

// When number of terms is greater than 0

int prev1 = 1;

int prev2 = 0;

// For loop to print Fibonacci series

for (int i = 1; i <= n; i++) {

if (i > 2) {

int num = prev1 + prev2;

prev2 = prev1;

prev1 = num;

System.out.print(num + " ");

}

// For first two terms

if (i == 1) {

System.out.print(prev2 + " ");

}

if (i == 2) {

System.out.print(prev1 + " ");

}

}

}

// Driver code

public static void main(String[] args) {

int n = 9;

// Function Call

printFib(n);

}

}

 
 

Python3

def print_fib(n):

if n < 1:

print("Invalid Number of terms")

return

# When number of terms is greater than 0

prev1 = 1

prev2 = 0

# For loop to print Fibonacci series

for i in range(1, n + 1):

if i > 2:

num = prev1 + prev2

prev2 = prev1

prev1 = num

print(num, end=" ")

# For first two terms

if i == 1:

print(prev2, end=" ")

if i == 2:

print(prev1, end=" ")

# Driver code

n = 9

# Function Call

print_fib(n)

 
 

C#

using System;

class Program

{

// Function to print Fibonacci series

static void PrintFib(int n)

{

if (n < 1)

{

Console.WriteLine("Invalid Number of terms");

return;

}

// When the number of terms is greater than 0

int prev1 = 1;

int prev2 = 0;

// For loop to print Fibonacci series

for (int i = 1; i <= n; i++)

{

if (i > 2)

{

int num = prev1 + prev2;

prev2 = prev1;

prev1 = num;

Console.Write(num + " ");

}

// For the first two terms

if (i == 1)

{

Console.Write(prev2 + " ");

}

if (i == 2)

{

Console.Write(prev1 + " ");

}

}

}

// Driver code

static void Main(string[] args)

{

int n = 9; // Number of terms in the Fibonacci series

// Function Call

PrintFib(n);

}

}

 
 

Javascript

// Function to print Fibonacci series

function printFib(n) {

if (n < 1) {

console.log("Invalid Number of terms");

return;

}

// When the number of terms is greater than 0

let prev1 = 1;

let prev2 = 0;

// For loop to print the Fibonacci series

for (let i = 1; i <= n; i++) {

if (i > 2) {

const num = prev1 + prev2;

prev2 = prev1;

prev1 = num;

console.log(num + " ");

}

// For the first two terms

if (i === 1) {

console.log(prev2 + " ");

}

if (i === 2) {

console.log(prev1 + " ");

}

}

console.log(); // Add a newline after printing the series

}

// Driver code

const n = 9;

// Function Call

printFib(n);

 
 

Complexity Analysis

  • Time Complexity: O(n), Because for n number for terms, the loop inside the printFib() function will be executed n times.
  • Auxiliary Space: O(1), Because we only used a few variables which don’t depends on the number of terms to be printed

Relation Between Pascal triangle and Fibonacci numbers:

Pascal’s triangle is the arrangement of the data in triangular form which is used to represent the coefficients of the binomial expansions, i.e. the second row in Pascal’s triangle represents the coefficients in (x+y)2and so on. In Pascal’s triangle, each number is the sum of the above two numbers. Pascal’s triangle has various applications in probability theory, combinatorics, algebra, and various other branches of mathematics.

Fibonacci Series - GeeksforGeeks (2)


As shown in the image the diagonal sum of the pascal’s triangle forms a fibonacci sequence.

Mathematically: [Tex]\Sigma_{k=0}^{\left \lfloor n/2 \right \rfloor} \binom{n-k}{k} = F_{n+1}[/Tex]

where [Tex]F_{t}[/Tex] is the t-th term of the Fibonacci sequence.

Golden Ratio:

Definition: The golden ratio, often denoted by the Greek letter phi (Φ) or the mathematical symbol τ (tau), is a special mathematical constant that has been of interest to mathematicians, scientists, artists, and architects for centuries. It is an irrational number, meaning its decimal representation goes on forever without repeating, and it is approximately equal to 1.6180339887…

The below image shows how the division of consecutive Fibonacci number forms a Golden Ratio i.e,

  • x-axis : F(n+1)/F(n), where F( ) represents a Fibonacci number.
  • y-axis : represents the value of the fraction obtained in x-axis.
Fibonacci Series - GeeksforGeeks (3)

The ratio of successive Fibonacci numbers approximates the golden ratio, and this relationship becomes more accurate as you move further along the Fibonacci sequence.

Fibonacci Spiral:

The Fibonacci spiral is created using a series of quarter circles, with radii that correspond to the Fibonacci numbers as shown in below image:Fibonacci Series - GeeksforGeeks (4)

The resulting spiral is known as a “Fibonacci spiral” or a “Golden Spiral” It is often associated with the Golden Ratio, which is an irrational number approximately equal to 1.61803398875. The Fibonacci spiral is considered visually pleasing and can be found in various aspects of art, architecture, and nature due to its aesthetic qualities and mathematical significance.

Problems based on Fibonacci Number/Series:

  • Sum of Fibonacci Numbers
  • How to check if a given number is Fibonacci number?
  • Program to print first n Fibonacci Numbers
  • Program to print Fibonacci Triangle
  • Minimum Fibonacci terms with sum equal to K
  • Largest subset whose all elements are Fibonacci numbers
  • Tiling Problem
  • Fibonacci Search
  • Matrix Exponentiation
  • Count Possible Decodings of a given Digit Sequence
  • Count number of binary strings without consecutive 1’s
  • Find nth Fibonacci number using Golden ratio
  • Maximum games played by winner
  • Count possible ways to construct buildings
  • Find two Fibonacci numbers whose sum can be represented as N
  • Minimum number of Fibonacci jumps to reach end

Some Facts about Fibonacci Numbers:

  • The Fibonacci numbers were first mentioned in Indian mathematics in a work by Pingala on enumerating potential patterns of Sanskrit poetry built from syllables of two lengths. The numbers were named after the Italian mathematician Leonardo of Pisa, also known as Fibonacci.
  • The Fibonacci sequence and the golden ratio are often found in natural patterns, such as the arrangement of leaves on a stem, the spirals of a pinecone, the seeds in a sunflower, and in art and architecture, like the Parthenon in Athens.
  • November 23 is Fibonacci Day as it forms the first 4 digits of fibonacci numbers 11/23.
  • Honey bees’ family tree follows fibonacci sequence.

Applications of Fibonacci Number/Series:

  • Mile to kilometre approximation : If a distance in miles is a fibonacci number then the succeeding fibonacci number is its kilmometer representation. Example: If we take a number from Fibonacci series i.e., 13 then the kilometre value will be 20.9215 by formulae, which is nearly 21 by rounding.
  • Financial Analysis: In the field of technical analysis in finance, Fibonacci retracement is a popular tool used to identify potential levels of support and resistance in stock and commodity price charts.
  • Art and Design: The golden ratio, which is closely related to Fibonacci numbers, is often used in art and design to create aesthetically pleasing proportions and layouts. It can be seen in architecture, paintings, and sculptures.
  • Data Structures and Algorithms: Fibonacci heaps, a type of data structure in computer science, are used in certain algorithms, such as Dijkstra’s algorithm, for efficient graph processing.


`; tags.map((tag)=>{ let tag_url = `videos/${getTermType(tag['term_id__term_type'])}/${tag['term_id__slug']}/`; tagContent+=``+ tag['term_id__term_name'] +``; }); tagContent+=`
Fibonacci Series - GeeksforGeeks (2024)
Top Articles
Latest Posts
Article information

Author: Aron Pacocha

Last Updated:

Views: 6239

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Aron Pacocha

Birthday: 1999-08-12

Address: 3808 Moen Corner, Gorczanyport, FL 67364-2074

Phone: +393457723392

Job: Retail Consultant

Hobby: Jewelry making, Cooking, Gaming, Reading, Juggling, Cabaret, Origami

Introduction: My name is Aron Pacocha, I am a happy, tasty, innocent, proud, talented, courageous, magnificent person who loves writing and wants to share my knowledge and understanding with you.