Advertisement
Guest User

Untitled

a guest
May 21st, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. // 1. Recursive approach
  2. func fib(_ n: Int) -> Int {
  3. guard n > 1 else { return n }
  4. return fib(n-1) + fib(n-2)
  5. }
  6. // Time Complexity: O(2^n)
  7. // Space Complexity: O(2^n)
  8.  
  9. // 2. Iterative approach
  10. func fib(_ n: Int) -> Int {
  11. var fibs: [Int] = [1, 1]
  12. (2...n).forEach { i in
  13. fibs.append(fibs[i - 1] + fibs[i - 2])
  14. }
  15. return fibs.last!
  16. }
  17.  
  18. // Time Complexity: O(n)
  19. // Space Complexity: O(n)
  20.  
  21. // 3. Iterative approach — Optimized
  22. func fib(_ n: Int) -> Int {
  23. var a = 1
  24. var b = 1
  25. guard n > 1 else { return a }
  26.  
  27. (2...n).forEach { _ in
  28. (a, b) = (a + b, a)
  29. }
  30. return a
  31. }
  32. // Time Complexity: O(n)
  33. // Space Complexity: O(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement