In this tutorial, we will learn how to calculate the power of a number using recursion in Swift. We will explore what recursion is, write the algorithm to compute the power of a number, and implement the solution step by step with a complete Swift program and output.


What is Recursion?

Recursion is a process in which a function calls itself to solve smaller subproblems of a larger problem. In recursive functions, a base case defines when to stop the recursion, and the recursive case breaks the problem into smaller instances.

In this tutorial, recursion will be used to calculate the power of a number by breaking it into smaller multiplications.


Algorithm to Calculate Power using Recursion

To compute the power of a number base raised to an exponent exp, follow these steps:

  1. If exp is 0, return 1 (base case).
  2. If exp is greater than 0, multiply base by the result of the same function with exp - 1.
  3. If exp is less than 0, calculate the power for the positive exponent and take its reciprocal (for fractional powers).

This approach ensures that the function handles all cases: positive exponents, negative exponents, and zero.


Step-by-Step Implementation in Swift

Let’s translate the algorithm into Swift code step by step.

1 Handle the Base Case

The base case is when the exponent is 0. Any number raised to the power of 0 is 1:

</>
Copy
func power(base: Double, exp: Int) -> Double {
    if exp == 0 {
        return 1 // Base case: any number to the power of 0 is 1
    }
    return 0 // Placeholder for further steps
}

2 Handle the Recursive Case for Positive Exponents

If the exponent is positive, multiply the base by the result of the same function with exp - 1:

</>
Copy
func power(base: Double, exp: Int) -> Double {
    if exp == 0 {
        return 1 // Base case
    } else if exp > 0 {
        return base * power(base: base, exp: exp - 1) // Recursive case for positive exponents
    }
    return 0 // Placeholder for further steps
}

3 Handle the Recursive Case for Negative Exponents

If the exponent is negative, calculate the power for the positive exponent and take its reciprocal:

</>
Copy
func power(base: Double, exp: Int) -> Double {
    if exp == 0 {
        return 1 // Base case
    } else if exp > 0 {
        return base * power(base: base, exp: exp - 1) // Recursive case for positive exponents
    } else {
        return 1 / power(base: base, exp: -exp) // Recursive case for negative exponents
    }
}

Explanation:

if exp == 0: Stops the recursion when the exponent reaches 0.

else if exp > 0: Multiplies the base by the result of the same function with the exponent decremented by 1.

else: Handles negative exponents by computing the reciprocal of the positive exponent result.

4 Test the Function

Let’s test the function with some example inputs:

</>
Copy
// Test cases
print("2^3 = \(power(base: 2, exp: 3))")   // 8.0
print("5^0 = \(power(base: 5, exp: 0))")   // 1.0
print("2^-2 = \(power(base: 2, exp: -2))") // 0.25

The function computes powers for positive, zero, and negative exponents.


Complete Swift Program

Here’s the complete Swift program:

</>
Copy
import Foundation

// Function to calculate the power of a number using recursion
func power(base: Double, exp: Int) -> Double {
    if exp == 0 {
        return 1 // Base case
    } else if exp > 0 {
        return base * power(base: base, exp: exp - 1) // Recursive case for positive exponents
    } else {
        return 1 / power(base: base, exp: -exp) // Recursive case for negative exponents
    }
}

// Test cases
print("2^3 = \(power(base: 2, exp: 3))")   // 8.0
print("5^0 = \(power(base: 5, exp: 0))")   // 1.0
print("2^-2 = \(power(base: 2, exp: -2))") // 0.25
print("10^4 = \(power(base: 10, exp: 4))") // 10000.0

Output

</>
Copy
2^3 = 8.0
5^0 = 1.0
2^-2 = 0.25
10^4 = 10000.0

Screenshot from Xcode

Swift - Calculate the Power of a Number using Recursion