Dynamic Programming in Swift
Dynamic Programming in Swift
Dynamic Programming (DP) is an algorithmic paradigm that solves a complex problem by breaking it into subproblems, solving each subproblem just once, and storing their solutions (often using memoization or tabulation) to avoid redundant computations.
Here, we explore two classic Dynamic Programming problems and their implementations in Swift.
1. Fibonacci Number
The Fibonacci sequence is defined as:
- for .
Tabulation (Bottom-Up) Implementation
This implementation optimizes space usage to by only storing the last two calculated values.
func fibonacci(_ n: Int) -> Int {
guard n > 1 else { return n }
var prev2 = 0
var prev1 = 1
var current = 0
for _ in 2...n {
current = prev1 + prev2
prev2 = prev1
prev1 = current
}
return current
}
// Example usage:
print("Fibonacci(10): \(fibonacci(10))")
// Output: Fibonacci(10): 55