cache added

This commit is contained in:
Jian Han 2018-04-19 21:50:54 +10:00
parent 135ae1e4e1
commit 9ce988f0e6
2 changed files with 25 additions and 4 deletions

View File

@ -2,17 +2,37 @@ package main
import "fmt" import "fmt"
func Fibonacci(x int) int { type Memoized func(int) int
var fibMem = Memoize(fib)
func Memoize(mf Memoized) Memoized {
cache := make(map[int]int)
return func(key int) int {
if val, found := cache[key]; found {
return val
}
temp := mf(key)
cache[key] = temp
return temp
}
}
func FibMemoized(n int) int {
return fibMem(n)
}
func fib(x int) int {
if x == 0 { if x == 0 {
return 0 return 0
} else if x <= 2 { } else if x <= 2 {
return 1 return 1
} else { } else {
return Fibonacci(x-2) + Fibonacci(x-1) return fib(x-2) + fib(x-1)
} }
} }
func main() { func main() {
fib := Fibonacci fmt.Println(fib(30))
fmt.Printf("%vn", fib(50)) fmt.Println(FibMemoized(30))
} }

View File

@ -0,0 +1 @@
package main