Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • DSA
  • Interview Problems on Recursion
  • Practice Recursion
  • MCQs on Recursion
  • Recursion Tutorial
  • Recursive Function
  • Recursion vs Iteration
  • Types of Recursions
  • Tail Recursion
  • Josephus Problem
  • Tower of Hanoi
  • Check Palindrome
Open In App
Next Article:
What is Recursion?
Next article icon

Introduction to Recursion

Last Updated : 24 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function.

  • A recursive algorithm takes one step toward solution and then recursively call itself to further move. The algorithm stops once we reach the solution.
  • Since called function may further call itself, this process might continue forever. So it is essential to provide a base case to terminate this recursion process.

Need of Recursion

  • Recursion helps in logic building. Recursive thinking helps in solving complex problems by breaking them into smaller subproblems.
  • Recursive solutions work as a a basis for Dynamic Programming and Divide and Conquer algorithms.
  • Certain problems can be solved quite easily using recursion like Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of Graph, etc.

Steps to Implement Recursion

Step1 – Define a base case: Identify the simplest (or base) case for which the solution is known or trivial. This is the stopping condition for the recursion, as it prevents the function from infinitely calling itself.

Step2 – Define a recursive case: Define the problem in terms of smaller subproblems. Break the problem down into smaller versions of itself, and call the function recursively to solve each subproblem.

Step3 – Ensure the recursion terminates: Make sure that the recursive function eventually reaches the base case, and does not enter an infinite loop.

Step4 – Combine the solutions: Combine the solutions of the subproblems to solve the original problem.

Example 1 : Sum of Natural Numbers

Let us consider a problem to find the sum of natural numbers, there are several ways of doing that but the simplest approach is simply to add the numbers starting from 0 to n.

Comparison of Recursive and Iterative Approaches

ApproachComplexityMemory Usage
Iterative ApproachO(n)O(1)
Recursive ApproachO(n)O(n)
C++
#include <iostream> using namespace std;  // Recursive function to find the sum of  // numbers from 0 to n int findSum(int n) {     // Base case      if (n == 1)          return 1;         // Recursive case      return n + findSum(n - 1); }  int main() {     int n = 5;     cout << findSum(n);     return 0; } 
C
#include <stdio.h>  // Recursive function to find the sum of  // numbers from 0 to n int findSum(int n) {     // Base case      if (n == 1)          return 1;         // Recursive case      return n + findSum(n - 1); }  int main() {     int n = 5;     printf("%d", findSum(n));     return 0; } 
Java
public class Main {     // Recursive function to find the sum of      // numbers from 0 to n     static int findSum(int n) {         // Base case          if (n == 1)              return 1;                   // Recursive case          return n + findSum(n - 1);     }      public static void main(String[] args) {         int n = 5;         System.out.println(findSum(n));     } } 
Python
def findSum(n):     # Base case      if n == 1:         return 1          # Recursive case      return n + findSum(n - 1)  n = 5 print(findSum(n)) 
C#
using System;  class Program {     // Recursive function to find the sum of      // numbers from 0 to n     static int FindSum(int n) {         // Base case          if (n == 1)              return 1;                  // Recursive case          return n + FindSum(n - 1);     }      static void Main() {         int n = 5;         Console.WriteLine(FindSum(n));     } } 
JavaScript
// Recursive function to find the sum of  // numbers from 0 to n function findSum(n) {     // Base case      if (n === 1)          return 1;          // Recursive case      return n + findSum(n - 1); }  let n = 5; console.log(findSum(n)); 

Output
15

What is the base condition in recursion? 
A recursive program stops at a base condition. There can be more than one base conditions in a recursion. In the above program, the base condition is when n = 1.

How a particular problem is solved using recursion? 
The idea is to represent a problem in terms of one or more smaller problems, and add one or more base conditions that stop the recursion.  

Example 2 : Factorial of a Number

The factorial of a number n (where n >= 0) is the product of all positive integers from 1 to n. To compute the factorial recursively, we calculate the factorial of n by using the factorial of (n-1). The base case for the recursive function is when n = 0, in which case we return 1.

C++
#include <iostream> using namespace std;  int fact(int n) {     // BASE CONDITION     if (n == 0)         return 1;        return n * fact(n - 1); }  int main() {     cout << "Factorial of 5 : " << fact(5);     return 0; } 
C
#include <stdio.h>  int fact(int n) {        // BASE CONDITION     if (n == 0)         return 1;        return n * fact(n - 1); }  int main() {     printf("Factorial of 5 : %d\n", fact(5));     return 0; } 
Java
public class GfG {     public static int fact(int n) {                // BASE CONDITION         if (n == 0)             return 1;                return n * fact(n - 1);     }      public static void main(String[] args) {         System.out.println("Factorial of 5 : " + fact(5));     } } 
Python
def fact(n):        # BASE CONDITION     if n == 0:         return 1     return n * fact(n - 1)  print("Factorial of 5 : ", fact(5)) 
C#
using System;  class Program {     static int Fact(int n) {                // BASE CONDITION         if (n == 0)             return 1;                  return n * Fact(n - 1);     }      static void Main() {         Console.WriteLine("Factorial of 5 : " + Fact(5));     } } 
JavaScript
function fact(n) {      // BASE CONDITION     if (n === 0)         return 1;          return n * fact(n - 1); }  console.log("Factorial of 5 : " + fact(5)); 
PHP
<?php function fact($n) {        // BASE CONDITION     if ($n == 0)         return 1;        return $n * fact($n - 1); }  echo "Factorial of 5 : " . fact(5); ?> 

Output
Factorial of 5 : 120

Illustration of the above code:

factorial

When does Stack Overflow error occur in recursion? 

If the base case is not reached or not defined, then the stack overflow problem may arise. Let us take an example to understand this.

int fact(int n)
{
// wrong base case (it may cause stack overflow).
if (n == 100)
return 1;
else
return n*fact(n-1);
}

  • In this example, if fact(10) is called, the function will recursively call fact(9), then fact(8), fact(7), and so on. However, the base case checks if n == 100. Since n will never reach 100 during these recursive calls, the base case is never triggered. As a result, the recursion continues indefinitely.
  • This continuous recursion consumes memory on the function call stack. If the system’s memory is exhausted due to these unending function calls, a stack overflow error occurs.
  • To prevent this, it’s essential to define a proper base case, such as if (n == 0) to ensure that the recursion terminates and the function doesn’t run out of memory.

What is the difference between direct and indirect recursion? 

A function is called direct recursive if it calls itself directly during its execution. In other words, the function makes a recursive call to itself within its own body.

An indirect recursive function is one that calls another function, and that other function, in turn, calls the original function either directly or through other functions. This creates a chain of recursive calls involving multiple functions, as opposed to direct recursion, where a function calls itself.

// An example of direct recursion
void directRecFun()
{
// Some code….

directRecFun();

// Some code…
}

// An example of indirect recursion
void indirectRecFun1()
{
// Some code…

indirectRecFun2();

// Some code…
}
void indirectRecFun2()
{
// Some code…

indirectRecFun1();

// Some code…
}

What is the difference between tail and non-tail recursion?

A recursive function is tail recursive when a recursive call is the last thing executed by the function.

Please refer tail recursion for details. 

How memory is allocated to different function calls in recursion? 

Recursion uses more memory to store data of every recursive call in an internal function call stack.

  • Whenever we call a function, its record is added to the stack and remains there until the call is finished.
  • The internal systems use a stack because function calling follows LIFO structure, the last called function finishes first.

When any function is called from main(), the memory is allocated to it on the stack. A recursive function calls itself, the memory for a called function is allocated on top of memory allocated to the calling function and a different copy of local variables is created for each function call. When the base case is reached, the function returns its value to the function by whom it is called and memory is de-allocated and the process continues.
Let us take the example of how recursion works by taking a simple function. 

C++
// A C++ program to demonstrate working of // recursion #include <bits/stdc++.h> using namespace std;  void printFun(int test) {     if (test < 1)         return;     else {         cout << test << " ";         printFun(test - 1); // statement 2         cout << test << " ";         return;     } }  // Driver Code int main() {     int test = 3;     printFun(test); } 
C
// A C program to demonstrate working of recursion #include <stdio.h>  void printFun(int test) {     if (test < 1)         return;     else {         printf("%d ", test);         printFun(test - 1); // statement 2         printf("%d ", test);         return;     } }  // Driver Code int main() {     int test = 3;     printFun(test);     return 0; } 
Java
// A Java program to demonstrate working of // recursion class GFG {     static void printFun(int test)     {         if (test < 1)             return;         else {             System.out.printf("%d ", test);             printFun(test - 1); // statement 2             System.out.printf("%d ", test);             return;         }     }      // Driver Code     public static void main(String[] args)     {         int test = 3;         printFun(test);     } }  // This code is contributed by // Smitha Dinesh Semwal   
Python
# A Python 3 program to # demonstrate working of # recursion   def printFun(test):      if (test < 1):         return     else:          print(test, end=" ")         printFun(test-1)  # statement 2         print(test, end=" ")         return  # Driver Code test = 3 printFun(test)  # This code is contributed by # Smitha Dinesh Semwal 
C#
// A C# program to demonstrate // working of recursion using System;  class GFG {      // function to demonstrate     // working of recursion     static void printFun(int test)     {         if (test < 1)             return;         else {             Console.Write(test + " ");              // statement 2             printFun(test - 1);              Console.Write(test + " ");             return;         }     }      // Driver Code     public static void Main(String[] args)     {         int test = 3;         printFun(test);     } }  // This code is contributed by Anshul Aggarwal. 
JavaScript
// A JavaScript program to demonstrate working of recursion function printFun(test) {     if (test < 1)         return;     else {         console.log(test);         printFun(test - 1); // statement 2         console.log(test);         return;     } }  // Driver Code let test = 3; printFun(test); 
PHP
<?php // PHP program to demonstrate  // working of recursion  // function to demonstrate  // working of recursion function printFun($test) {     if ($test < 1)         return;     else     {         echo("$test ");                  // statement 2         printFun($test-1);                   echo("$test ");         return;     } }  // Driver Code $test = 3; printFun($test);  // This code is contributed by // Smitha Dinesh Semwal. ?> 

Output
3 2 1 1 2 3 

Initial Call: When printFun(3) is called from main(), memory is allocated for printFun(3). The local variable test is initialized to 3, and statements 1 to 4 are pushed onto the stack.

First Recursive Call:

  • printFun(3) calls printFun(2).
  • Memory for printFun(2) is allocated, the local variable test is initialized to 2, and statements 1 to 4 are pushed onto the stack.

Second Recursive Call:

  • printFun(2) calls printFun(1).
  • Memory for printFun(1) is allocated, the local variable test is initialized to 1, and statements 1 to 4 are pushed onto the stack.

Third Recursive Call:

  • printFun(1) calls printFun(0).
  • Memory for printFun(0) is allocated, the local variable test is initialized to 0, and statements 1 to 4 are pushed onto the stack.

Base Case: When printFun(0) is called, it hits the base case (if statement) and returns control to printFun(1).

Returning from Recursion:

  • After returning from printFun(0), the remaining statements of printFun(1) are executed and it returns control to printFun(2).
  • Similarly, after returning from printFun(2), control returns to printFun(3).

Output: As a result, the output will print the values in the following order:

  • From 3 down to 1 (as the recursive calls are made).
  • Then from 1 back to 3 (as the recursive calls unwind).

The memory stack grows with each function call and shrinks as the recursion unwinds, following the LIFO structure.


Recursion VS Iteration

SR No.RecursionIteration
1)Terminates when the base case becomes true.Terminates when the loop condition becomes false.
2)Logic is built in terms of smaller problems.Logic is built using iterating over something.
3)Every recursive call needs extra space in the stack memory.Every iteration does not require any extra space.
4)Smaller code size.Larger code size.

What are the advantages of recursive programming over iterative programming? 

  • Recursion provides a clean and simple way to write code.
  • Some problems are inherently recursive like tree traversals, Tower of Hanoi, etc. For such problems, it is preferred to write recursive code. We can write such codes also iteratively with the help of a stack data structure. For example refer Inorder Tree Traversal without Recursion, Iterative Tower of Hanoi.

What are the disadvantages of recursive programming over iterative programming?

Note every recursive program can be written iteratively and vice versa is also true.

  • Recursive programs typically have more space requirements and also more time to maintain the recursion call stack.
  • Recursion can make the code more difficult to understand and debug, since it requires thinking about multiple levels of function calls..

Example 3 : Fibonacci with Recursion

Write a program and recurrence relation to find the Fibonacci series of n where n >= 0. 

Mathematical Equation:  

n if n == 0, n == 1;
fib(n) = fib(n-1) + fib(n-2) otherwise;

Recurrence Relation: 

T(n) = T(n-1) + T(n-2) + O(1)

C++
// C++ code to implement Fibonacci series #include <bits/stdc++.h> using namespace std;  // Function for fibonacci  int fib(int n) {     // Stop condition     if (n == 0)         return 0;      // Stop condition     if (n == 1 || n == 2)         return 1;      // Recursion function     else         return (fib(n - 1) + fib(n - 2)); }  // Driver Code int main() {     // Initialize variable n.     int n = 5;     cout<<"Fibonacci series of 5 numbers is: ";      // for loop to print the fibonacci series.     for (int i = 0; i < n; i++)      {         cout<<fib(i)<<" ";     }     return 0; } 
C
// C code to implement Fibonacci series #include <stdio.h>  // Function for fibonacci int fib(int n) {     // Stop condition     if (n == 0)         return 0;      // Stop condition     if (n == 1 || n == 2)         return 1;      // Recursion function     else         return (fib(n - 1) + fib(n - 2)); }  // Driver Code int main() {     // Initialize variable n.     int n = 5;     printf("Fibonacci series "            "of %d numbers is: ",            n);      // for loop to print the fibonacci series.     for (int i = 0; i < n; i++) {         printf("%d ", fib(i));     }     return 0; } 
Java
// Java code to implement Fibonacci series import java.util.*;  class GFG {  // Function for fibonacci static int fib(int n) {     // Stop condition     if (n == 0)         return 0;      // Stop condition     if (n == 1 || n == 2)         return 1;      // Recursion function     else         return (fib(n - 1) + fib(n - 2)); }  // Driver Code public static void main(String []args) {        // Initialize variable n.     int n = 5;     System.out.print("Fibonacci series of 5 numbers is: ");      // for loop to print the fibonacci series.     for (int i = 0; i < n; i++)      {         System.out.print(fib(i)+" ");     } } }  // This code is contributed by rutvik_56. 
Python
# Python code to implement Fibonacci series  # Function for fibonacci def fib(n):      # Stop condition     if (n == 0):         return 0      # Stop condition     if (n == 1 or n == 2):         return 1      # Recursion function     else:         return (fib(n - 1) + fib(n - 2))   # Driver Code  # Initialize variable n. n = 5; print("Fibonacci series of 5 numbers is :",end=" ")  # for loop to print the fibonacci series. for i in range(0,n):      print(fib(i),end=" ") 
C#
using System;  public class GFG {    // Function for fibonacci   static int fib(int n)   {      // Stop condition     if (n == 0)       return 0;      // Stop condition     if (n == 1 || n == 2)       return 1;      // Recursion function     else       return (fib(n - 1) + fib(n - 2));   }    // Driver Code   static public void Main ()   {      // Initialize variable n.     int n = 5;     Console.Write("Fibonacci series of 5 numbers is: ");      // for loop to print the fibonacci series.     for (int i = 0; i < n; i++)      {       Console.Write(fib(i) + " ");     }   } }  // This code is contributed by avanitrachhadiya2155 
JavaScript
// Function for fibonacci function fib(n) {     // Stop condition     if (n === 0) return 0;      // Stop condition     if (n === 1 || n === 2) return 1;      // Recursion function     return fib(n - 1) + fib(n - 2); }  // Driver Code let n = 5; console.log("Fibonacci series of 5 numbers is:");  // for loop to print the fibonacci series. for (let i = 0; i < n; i++) {     console.log(fib(i) + " "); } 

Output
Fibonacci series of 5 numbers is: 0 1 1 2 3 

Recursion Tree for the above Code:

Fibonacci-series

fibonacci series

Common Applications of Recursion

  1. Tree and Graph Traversal: Used for systematically exploring nodes/vertices in data structures like trees and graphs.
  2. Sorting Algorithms: Algorithms like quicksort and merge sort divide data into subarrays, sort them recursively, and merge them.
  3. Divide-and-Conquer Algorithms: Algorithms like binary search break problems into smaller subproblems using recursion.
  4. Fractal Generation: Recursion helps generate fractal patterns, such as the Mandelbrot set, by repeatedly applying a recursive formula.
  5. Backtracking Algorithms: Used for problems requiring a sequence of decisions, where recursion explores all possible paths and backtracks when needed.
  6. Memoization: Involves caching results of recursive function calls to avoid recomputing expensive subproblems.

These are just a few examples of the many applications of recursion in computer science and programming. Recursion is a versatile and powerful tool that can be used to solve many different types of problems.

Summary of Recursion:

  • There are two types of cases in recursion i.e. recursive case and a base case.
  • The base case is used to terminate the recursive function when the case turns out to be true.
  • Each recursive call makes a new copy of that method in the stack memory.
  • Infinite recursion may lead to running out of stack memory.
  • Examples of Recursive algorithms: Merge Sort, Quick Sort, Tower of Hanoi, Fibonacci Series, Factorial Problem, etc.

Output based practice problems for beginners: 
Practice Questions for Recursion | Set 1 
Practice Questions for Recursion | Set 2 
Practice Questions for Recursion | Set 3 
Practice Questions for Recursion | Set 4 
Practice Questions for Recursion | Set 5 
Practice Questions for Recursion | Set 6 
Practice Questions for Recursion | Set 7
Quiz on Recursion 
Coding Practice on Recursion: 
All Articles on Recursion 
Recursive Practice Problems with Solutions



Next Article
What is Recursion?

S

Sonal Tuteja
Improve
Article Tags :
  • Algorithms
  • DSA
  • Recursion
  • DSA Tutorials
  • tail-recursion
Practice Tags :
  • Algorithms
  • Recursion

Similar Reads

  • Introduction to Recursion
    The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. A recursive algorithm takes one step toward solution and then recursively call itself to further move. The algorithm stops once we reach the solution
    15+ min read
  • What is Recursion?
    Recursion is defined as a process which calls itself directly or indirectly and the corresponding function is called a recursive function. Example 1 : Sum of Natural Numbers Let us consider a problem to find the sum of natural numbers, there are several ways of doing that but the simplest approach i
    8 min read
  • Difference between Recursion and Iteration
    A program is called recursive when an entity calls itself. A program is called iterative when there is a loop (or repetition). Example: Program to find the factorial of a number C/C++ Code // C program to find factorial of given number #include <stdio.h> // ----- Recursion ----- // method to f
    8 min read
  • Types of Recursions
    What is Recursion? The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. Using recursive algorithm, certain problems can be solved quite easily. Examples of such problems are Towers of Hanoi (TOH), Inord
    15+ min read
  • Finite and Infinite Recursion with examples
    The process in which a function calls itself directly or indirectly is called Recursion and the corresponding function is called a Recursive function. Using Recursion, certain problems can be solved quite easily. Examples of such problems are Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Tr
    6 min read
  • What is Tail Recursion
    Tail recursion is defined as a recursive function in which the recursive call is the last statement that is executed by the function. So basically nothing is left to execute after the recursion call. For example the following function print() is tail recursive. [GFGTABS] C++ // An example of tail re
    7 min read
  • What is Implicit recursion?
    What is Recursion? Recursion is a programming approach where a function repeats an action by calling itself, either directly or indirectly. This enables the function to continue performing the action until a particular condition is satisfied, such as when a particular value is reached or another con
    5 min read
  • Why is Tail Recursion optimization faster than normal Recursion?
    What is tail recursion? Tail recursion is defined as a recursive function in which the recursive call is the last statement that is executed by the function. So basically nothing is left to execute after the recursion call. What is non-tail recursion? Non-tail or head recursion is defined as a recur
    4 min read
  • Recursive Functions
    A Recursive function can be defined as a routine that calls itself directly or indirectly. In other words, a recursive function is a function that solves a problem by solving smaller instances of the same problem. This technique is commonly used in programming to solve problems that can be broken do
    4 min read
  • Difference Between Recursion and Induction
    Recursion and induction are fundamental ideas in computer science and mathematics that might be regularly used to solve problems regarding repetitive structures. Recursion is a programming technique in which a function calls itself to solve the problem, whilst induction is a mathematical proof techn
    4 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences