Skip to content

Instantly share code, notes, and snippets.

View stevencurtis's full-sized avatar

Steven Curtis stevencurtis

View GitHub Profile
@stevencurtis
stevencurtis / fibiterative
Created February 4, 2019 03:48
An iterative implementation of the Fibonacci series
func fib (_ n: Int) -> Int {
guard n > 1 else {return n}
var a = 0
var b = 1
for _ in 2...n {
let temp = b
b = a + b
a = temp
}
return b
@stevencurtis
stevencurtis / fibrecursive
Created February 4, 2019 04:15
An recursive implementation of the Fibonacci series
func fib (_ n: Int) -> Int {
guard n > 1 else {return n}
return fib(n - 1) + fib(n - 2)
}
@stevencurtis
stevencurtis / recursiveexample
Created February 4, 2019 06:50
A simple example of recursion
func countDown(_ num: Int){
if (num < 1) {return}
print (num)
return countDown(num - 1)
}
@stevencurtis
stevencurtis / factorialrecursive
Created February 4, 2019 10:11
Factorial Recursive
func fact (_ num: Int) -> Int {
if num == 1 {return 1}
return num * fact(num - 1)
}
@stevencurtis
stevencurtis / factorialiterative
Created February 4, 2019 10:13
Factorial Iterative
func fact (_ num : Int) -> Int {
if num == 1 {return 1}
var result = 1
for i in 1...num {
result = result * i
}
return result
}
@stevencurtis
stevencurtis / countDownIterative
Created February 4, 2019 10:22
Iterative countDown
func countDown(_ num: Int){
if (num < 1) {return}
var number = num
while number > 0 {
print (number)
number -= 1
}
}
@stevencurtis
stevencurtis / FibTopDownExternalCache
Created February 5, 2019 07:40
Fibonacci top down
var cache : [Int] = [0]
func fib (_ num: Int) -> Int {
guard num > 1 else { return num }
if (cache.count > num) {
return cache[num]
}
let fibNum = fibRec(num - 1) + fibRec(num - 2)
cache.append(fibNum)
return fibNum
@stevencurtis
stevencurtis / FibTopDownPassCache
Last active February 5, 2019 07:48
Fibonacci top down passing the cache
func fib (_ num: Int) -> Int {
var first = [0, 1]
return fib(num, &first)
}
func fib(_ num: Int, _ cache: inout [Int]) -> Int {
if (cache.count > num) {
return cache[num]
}
let fibNum = fib(num - 1, &cache) + fib(num - 2, &cache)
@stevencurtis
stevencurtis / Fibonaccibottomup
Created February 5, 2019 07:50
Fibonacci bottom-up
func fib(_ n: Int) -> Int {
guard n > 1 else { return n }
var cache : [Int] = Array(repeating: 0, count: n)
cache[0] = 0
cache[1] = 1
for i in 2..<n {
cache[i] = cache[i - 1] + cache[i - 2]
}
return cache[n - 1] + cache[n - 2]
}
@stevencurtis
stevencurtis / Fibonaccibottomupoptimised
Created February 5, 2019 07:59
Fibonacci bottom-up optimised
func fib (_ num: Int) -> Int {
guard num > 1 else { return num }
var a = 0
var b = 1
var c = 0
for _ in 2..<num {
c = a + b
a = b
b = c
}