Swiftスレ
レス数が900を超えています。1000を超えると表示できなくなるよ。
0929デフォルトの名無しさん
2014/06/12(木) 23:55:41.67ID:BYtkdS23Swift的階乗計算(キャッシュ機能付き)
func memoize<T: Hashable, U>( body: ((T)->U, T)->U ) -> (T)->U {
var memo = Dictionary<T, U>()
var result: ((T)->U)!
result = { x in
if let q = memo[x] { return q }
let r = body(result, x)
memo[x] = r
return r
}
return result
}
let factorial = memoize { factorial, x in x == 0 ? 1 : x * factorial(x - 1) }
println(factorial(5))
レス数が900を超えています。1000を超えると表示できなくなるよ。