Problem Statement

Write a recursive function to print numbers from n to 1 in decreasing order. The function should take an integer n as input and print the numbers linearly from n down to 1.

Examples

Example 1:

Input: n = 5
Output:
5
4
3
2
1
Example 2:

Input: n = 7
Output:
7
6
5
4
3
2
1

Different Approaches

1️⃣ Top Down Approach

Code:

#include <iostream>
using namespace std;

void printNumbers(int n) {
    // Base case: when n reaches 0, stop the recursion.
    if (n == 0) 
        return;
    
    // Print the current number
    cout << n << endl;
    
    // Recursive call with n-1
    printNumbers(n - 1);
}

int main() {
    int n;
    cout << "Enter a number: ";
    cin >> n;
    
    // Start recursion from n
    printNumbers(n);
    
    return 0;
}

Explanation:

  • The function printNumbers(int n) prints the number n, and then calls itself with n-1 to print the next number.
  • The base case (if (n == 0)) ensures that the function stops when it reaches zero, avoiding infinite recursion.

Complexity Analysis:

  1. Time Complexity:
    • The time complexity is O(n), where n is the input value.
    • The function is called n times before hitting the base case.
  2. Space Complexity:
    • The space complexity is O(n) because each recursive call uses stack space, and the maximum depth of recursion is n.