 }
 let fibo = memoize2 { (fib, x: Int) in x < 2 ? Double(x) : fib(x - 2) + fib(x - 1) }
 
-let φ2 = fibo(45) / fibo(44)+let φ2 = fibo(45) / fibo(44)

fibonacci(3)

let φ = fibonacci(45) / fibonacci(44)

///**
//* recursive algorithm - take part 2

fibonacci, n in
n < 2 ? Double(n) : fibonacci(n-2) + fibonacci(n-1)
}
let fibonacci: (Int)->Int = memoize{
    fibonacci, n in
    n < 2 ? n : fibonacci(n-2) + fibonacci(n-1)
}
*/
//fibonacci(3)

/**
* recursive algorithm - fail to run successfully, take part 1
*
func memoize<T: Hashable, U>( body: (T)->U ) -> (T)->U {
    var memo = Dictionary<T, U>()
    return { x in
