Coding Exercise: Calculate Power (x^n) Using Recursion

Write recursive function to compute x^n where x^0=1, x^n=x*x^(n-1).

Test cases: power(2,3)=8, power(3,2)=9, power(5,0)=1.

Problem Statement

Input: base x, exponent n (n ≥ 0)

Output: x^n

Base case: power(x,0) = 1

Recursive: power(x,n) = x * power(x,n-1)

Approach

1. If n==0, return 1 (base case)

2. Else: return x * power(x, n-1)

3. Linear recursion (much better than Fibonacci!)

Solution Code

C++
#include <iostream>
using namespace std;

long long power(int base, int exp) {
    // Base case
    if (exp == 0) {
        return 1;
    }
    // Recursive case
    return base * power(base, exp - 1);
}

int main() {
    int x, n;
    cout << "Enter base: ";
    cin >> x;
    cout << "Enter exponent: ";
    cin >> n;
    
    cout << x << "^" << n << " = " << power(x, n) << endl;
    return 0;
}

Dry Run: power(3, 4)

TEXT
power(3,4) → 3 * power(3,3)
           ↓
power(3,3) → 3 * power(3,2)
           ↓
power(3,2) → 3 * power(3,1)
           ↓
power(3,1) → 3 * power(3,0)
           ↓
power(3,0) → 1 (BASE CASE)

Unwind: 3*1=3 → 3*3=9 → 3*9=27 → 3*27=81
Result: 81 ✓

Test Cases

TEXT
3^0 → 1
2^3 → 8
3^2 → 9
5^3 → 125
10^2 → 100

Optimization: Exponentiation by Squaring

C++
long long powerFast(int base, int exp) {
    if (exp == 0) return 1;
    if (exp % 2 == 0) {
        long long half = powerFast(base, exp/2);
        return half * half;
    }
    return base * powerFast(base, exp-1);
}

Time: O(log n) vs O(n)

Complexity Analysis

Basic: Time O(n), Space O(n)

Optimized: Time O(log n), Space O(log n)

Practice Variations

1. power(x, n) for negative exponents (1/x^n)

2. Iterative power function

3. Binary exponentiation implementation

Conclusion

Mastered recursive power! Linear recursion is intuitive.

Next: String reversal or array sum recursively.