In this post, we will be exploring about the Fibonacci series. We will learn about the theory behind the Fibonacci series and algorithm to implement Fibonacci series. And yes we will implement Fibonacci series in C.
So, what is actually a Fibonacci series?
Fibonacci series is a series in which each number is the sum of the previous two numbers. In this series, we have to choose the first two numbers; they might be 0 and 1, or 1 and 1.
Example 1: For 0 as first number and 1 as second number; 0, 1, 1, 2, 3, 5, 8, 13, 21, …, up to n terms Example 2: For 1 as both first and second numbers; 1, 1, 2, 3, 5, 8, 13, 21, …, up to n terms
So in the Fibonacci series, for the nth term we will have to add (n-1)th and (n-2)th terms. However, it is not applicable for first and second terms. They are taken manually. Mathematically, we can represent Fibonacci series as,
We will be using 0 and 1 as the first two numbers to avoid confusion from this point.
1st term = 0 and 2nd term = 1. Then, 3rd term = 1st term + 2nd term = 0 + 1 = 1 4th term = 2nd term + 3rd term = 1 + 1 = 2 5th term = 3rd term + 4th term = 1 + 2 = 3 6th term = 4th term + 5th term = 2 + 3 = 5 7th term = 5th term + 6th term = 3 + 5 = 8 And so on up to nth term
But what if we have only one term. We will choose the first chosen number i.e. 0 (from 0 and 1). Also, in case of two terms only, we will have 0 and 1.
For 1 term only, Series: 0 For 2 terms only, Series: 0 and 1
From above explanation, we can generate a simple formula to calculate next term.
nth term = (n -1)th term + (n - 2)th term
Algorithm to find Fibonacci Series for n terms
We will be assuming the value of first and second term as 0 and 1 respectively.
Step 1: Start. Step 2: Initialize first_term as 0, second_term as 1 and i as 0. Step 3: Take number of terms as input from user in variable terms. Step 4: Repeat from step 4a to step 4e until i < terms. Step 4a: if i < 1 (i.e. for first term) assign value of first_term to next_term. Step 4b: else if i < 2 (i.e. for second term) assign value of second_term to next_term. Step 4c: else for all remaining terms, Step 4ci: add first_term and second term and assign result to next_term. Step 4cii: assign second_term to first_term. Step 4ciii: assign next_term to second_term. Step 4d: Display next_term. Step 4e: Increment i by 1. Step 5: End.
Pseudo Code to find Fibonacci series for n terms,
Start, first_term = 0 second_term = 1 i = 0 terms = Take input from user for number of terms Repeat until i < terms, if i < 1, next_term = first_term else if i < 2, next_term = second_term else, next_term = first_term + second_term first_term = second_term second_term = next_term Display next_term i = i + 1 End.
Program to find Fibonacci Series in C
//fibonicca series upto 10th term #include<stdio.h> void main() { int first_term = 0, second_term = 1, next_term, terms, i; printf("Enter the number of terms: "); scanf("%d", &terms); for (i=0; i < terms; i++) { // For First Term if (i < 1) { next_term = first_term; } // For Second Term else if (i < 2) { next_term = second_term; } // For Remaining Terms else { next_term = first_term + second_term; first_term = second_term; second_term = next_term; } printf("%d ", next_term); } }
Note: The values of first and second terms can be chosen as per you requirements or you can take input from user for first and second term.
Output:
Let’s see output for 10 terms,
Enter the number of terms: 10 0 1 1 2 3 5 8 13 21 34
For 4 terms,
Enter the number of terms: 4 0 1 1 2
Explanation
- At first, we have to initialize the values of
first_term
andsecond_term
as 0 and 1 respectively. You can give user right to choose first and second terms by taking them as input. For now, we have provided it manually.
int first_term = 0, second_term = 1
- Number of terms is unknown. So, it should be read from the user. We read number of terms in variable
terms
. If you are not sure how to take input in C you can head over to our post: C Program to take input from user and print them.
printf("Enter the number of terms: "); scanf("%d", &terms);
- Then, we will repeat/loop till i < terms. Initially value of i is set to 0 and i is incremented by 1 for every loop.
for (i=0; i < terms; i++) { . . . }
- Moving forward, we should identify if current term is first term or not. For this, we check
if i < 1
. If yes, we assign first_term term to next_term which will be printed as first term.
// For First Term if (i < 1) { next_term = first_term; }
- Similarly, we should identify if the current term is second term. For this, we check
if i < 2
. If yes, we assign second_term to next_term.
// For Second Term
else if (i < 2) {
next_term = second_term;
}
- Then, for all terms except first and second term we have to add first_term and second term and assign it to next_term. After that, assign second term to first term and next_term to second_term.
// For Remaining Terms else { next_term = first_term + second_term; first_term = second_term; second_term = next_term; }
- Finally, next_term is printed which contains the value of current nth term where n = 1, 2, 3, 4,…, n.
printf("%d ", next_term);
More Examples