Fibonacci using recursion

Last Updated : 28 Sep, 2026

Given a non-negative integer n, Find the nth fibonacci number using recursion.

The Fibonacci sequence is a sequence in which each number is the sum of the two preceding numbers. The sequence starts with 0 and 1. The Fibonacci numbers are defined as:

  • f(0) = 0
  • f(1) = 1
  • f(n) = f(n - 1) + f(n - 2), for n > 1

Examples:

Input: n = 3
Output: 2
Explanation: The Fibonacci sequence is 0, 1, 1, 2, .... Hence, f(3) = 2.

Input: n = 5
Output: 5
Explanation: The Fibonacci sequence is 0, 1, 1, 2, 3, 5, .... Hence, f(5) = 5.

Try It Yourself
redirect icon

Fibonacci using Recursion - O(2^n) Time and O(n) Auxiliary Space

The Fibonacci sequence can be calculated recursively using the relation f(n) = f(n - 1) + f(n - 2).

  • If n is 0 or 1, return n as the base case.
  • Otherwise, recursively calculate f(n - 1) and f(n - 2).
  • Add the results of both recursive calls to get f(n).

Consider: n = 4

  • The function first calculates f(3) and f(2).
  • These calls are further divided into smaller subproblems until the base cases f(0) and f(1) are reached.
  • The returned values are then added to obtain the final result.
frame_3106 C++
#include <iostream>
using namespace std;

int nthFibonacci(int n){

    // Base case
    if (n <= 1){
        return n; 
    }

    // Recursive case
    return nthFibonacci(n - 1) + nthFibonacci(n - 2);
}

int main(){
    int n = 5;
    int result = nthFibonacci(n);
    cout << result << endl;

    return 0;
}
C
#include <stdio.h>

int nthFibonacci(int n){
    
    // Base case
    if (n <= 1){
        return n;
    }
    
    // Recursive case
    return nthFibonacci(n - 1) + nthFibonacci(n - 2);
}

int main(){
    int n = 5;
    int result = nthFibonacci(n);
    printf("%d\n", result);
    return 0;
}
Java
class GFG {
    static int nthFibonacci(int n){
        
        // Base case
        if (n <= 1) {
            return n;
        }
        
        // Recursive case
        return nthFibonacci(n - 1) + nthFibonacci(n - 2);
    }

    public static void main(String[] args){
        int n = 5;
        int result = nthFibonacci(n);
        System.out.println(result);
    }
}
Python
def nthFibonacci(n):

    # Base case
    if n <= 1:
        return n

    # Recursive case
    return nthFibonacci(n - 1) + nthFibonacci(n - 2)

if __name__ == "__main__":
    n = 5
    result = nthFibonacci(n)
    print(result)
C#
using System;
class GFG {

    static int nthFibonacci(int n){
        
        // Base case
        if (n <= 1) {
            return n;
        }
        
        // Recursive case
        return nthFibonacci(n - 1) + nthFibonacci(n - 2);
    }

    static void Main(){
        int n = 5;
        int result = nthFibonacci(n);
        Console.WriteLine(result);
    }
}
JavaScript
function nthFibonacci(n){

    // Base case
    if (n <= 1) {
        return n;
    }

    // Recursive case
    return nthFibonacci(n - 1) + nthFibonacci(n - 2);
}

//Driven Code
let n = 5;
let result = nthFibonacci(n);
console.log(result);

Output
5
Comment