In this article, we will learn what is the Fibonacci series. We will also learn how to write the Fibonacci series program in java using various methods like iterative, recursive, and recursive with memoization. We will also discuss the time and space complexity of all the methods.

## What is the Fibonacci series?

In the Fibonacci series, the next term is an addition of the previous two terms. For example, if the previous two terms are 3 and 5 then the next term will be 8 (3+5). The first two terms of the Fibonacci series are 0 and 1 respectively. Now, if we look at the third term it will be the summation of the first term(0) and the second term(1) is 1 (0+1). If we look for the fourth term it will be the addition of the second term(1) and the third term (1) is 2(1+1). Using the same approach we can find the remaining terms easily.

In the above image, we can see the first ten terms of the Fibonacci series. We can clearly observe that apart from the first two terms every term is the sum of its previous two terms. Now, we have an idea about how the Fibonacci series is constructed. So let’s see various approaches to writing the Fibonacci series program in java.

## Approach 1: Iterative method for the Fibonacci series program in java

In this iterative method, we will use the first two terms of the Fibonacci series 0 and 1, and then we will find further terms using these two terms. Let’s see how to write the Fibonacci series program in java using this method.

// iterative fibonacci program in java class PrepBytes { public static void main(String[] args) { int first_term=0; int second_term=1; int second_last_term=0; int last_term=1; System.out.println("The first 10 terms of the Fibonacci series are:"); for(int i=0;i<10;i++){ if(i==0){ System.out.print(first_term+" "); } else if(i==1){ System.out.print(second_term+" "); } else{ int current_term=second_last_term+last_term; System.out.print(current_term+" "); second_last_term=last_term; last_term=current_term; } } } }

**Output:**

```
The first 10 terms of the Fibonacci series are:
0 1 1 2 3 5 8 13 21 34
```

In the above Fibonacci program in java, first, we have defined the initial two terms 0 and 1. After that, we have also created two more variables last_term and second_last_term to keep track of the last and second last term so far. Now, we will run a for loop 10 times to print the first 10 terms of the Fibonacci series. In the loop, if i is less than 2 then we will directly print the first two terms, and if i is greater than or equal to 2 then first we will compute the current term which equals the sum of the last and second last term. Now, we will change the second last term as the last term and the last term as the current term to calculate further terms. In the output, we can see that the first ten terms of the Fibonacci series are printed.

**Time Complexity: O(n)**

**Auxiliary Space Complexity: O(1)**

## Approach 2: Recursive method for the Fibonacci series program in java

In this approach, we will use base case as the first two terms and our recursive formula for the nth term will be (n-1)th term +(n-2)th term. Let’s see how to write the Fibonacci series program in java using the recursive method.

// recursive fibonacci program in java class PrepBytes { static int fibonacci(int n) { if (n < 2) return n; return fibonacci(n - 1) + fibonacci(n - 2); } public static void main(String args[]) { System.out.println("The first 10 terms of the Fibbonaci series are:"); for (int i = 0; i < 10; i++) { System.out.print(fibonacci(i) + " "); } } }

**Output:**

```
The first 10 terms of the Fibonacci series are:
0 1 1 2 3 5 8 13 21 34
```

In the above Fibonacci program in java, we have written a recursive method Fibonacci. In that method, we have given base case (recursion termination condition) if the given number is less than 2 then we will return that number. Otherwise, we will find the n-1 term [fibonacci(n-1)] and the n-2 term [fibonacci(n-2)] and we will return the sum of both terms. In the output, we can see that the first ten terms of the Fibonacci series are printed.

**Time Complexity: O(2^n)**

**Auxiliary Space Complexity: O(1)**

## Approach 3: Recursion + Memoization method for the Fibonacci series program in java

In this method, we will use the above recursion method the only difference is that we will use the memoization method with this approach. Memoization means we will store the answer to all the calculated terms so that we can use them again and we do not need to find that term again and again.

// recursive + memoization fibonacci program in java class PrepBytes { static int fibonacci(int n,int[] memo) { if (memo[n]!=-1){ return memo[n]; } if (n < 2) return n; int current_term= fibonacci(n - 1,memo) + fibonacci(n - 2,memo); memo[n]=current_term; return current_term; } public static void main(String args[]) { int[] memo= new int[10]; for(int i=0;i<10;i++){ if(i<2){ memo[i]=i; } else{ memo[i]=-1; } } System.out.println("The first 10 terms of the Fibbonaci series are:"); for (int i = 0; i < 10; i++) { System.out.print(fibonacci(i,memo) + " "); } } }

**Output:**

```
The first 10 terms of the Fibonacci series are:
0 1 1 2 3 5 8 13 21 34
```

In the above Fibonacci program in java, we have created an array of size 10 to store calculated terms and we will initialize the first two terms as 0 and 1 in that array. After that, we will use the same recursive method as above to find the nth term of the Fibonacci series. Now, when we call a method Fibonacci to find the nth term we have two options. One is, if the nth term is already calculated then we will directly return the answer. Otherwise, we will calculate the answer and store the answer in an array while returning from the recursive call. In the output, we can see that the first ten terms of the Fibonacci series are printed.

**Other Java Programs**

Java Program to Add Two Numbers

Java Program to Check Prime Number

Java Program to Check Whether a Number is a Palindrome or Not

Java Program to Find the Factorial of a Number

Java Program to Reverse a Number

Java Program to search an element in a Linked List

Program to convert ArrayList to LinkedList in Java

Java Program to Reverse a linked list

Java Program to search an element in a Linked List

Anagram Program in Java

Inheritance Program in Java

Even Odd Program in Java

Hello World Program in Java

If else Program in Java

Binary Search Program in Java

Linear Search Program in Java

Menu Driven Program in Java

Package Program in Java

Leap Year Program in Java

Array Programs in Java

Linked List Program in Java

String Programs in Java

Star Program in Java

Number Pattern Program in Java

For Loop Program In Java

Pattern Program in Java

String Palindrome Program in Java

Thread Program in JAVA

Java Scanner Program

While Loop Program in Java

Bubble Sort Program in Java