aboutsummaryrefslogtreecommitdiffstats
path: root/70-go/main.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--70-go/main.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/70-go/main.go b/70-go/main.go
new file mode 100644
index 0000000..0613cfe
--- /dev/null
+++ b/70-go/main.go
@@ -0,0 +1,30 @@
+package main
+
+import "fmt"
+
+func climbStairs(n int) int {
+ var fact func(n int, memo map[int]int) int
+
+ memo := make(map[int]int, n)
+ fact = func(n int, memo map[int]int) int {
+ if _, ok := memo[n]; ok {
+ return memo[n]
+ }
+ if n < 2 {
+ return 1
+ }
+
+ memo[n] = fact(n-1, memo) + fact(n-2, memo)
+ return memo[n]
+ }
+
+ return fact(n, memo)
+}
+
+func main() {
+ fmt.Println(climbStairs(2))
+ fmt.Println(climbStairs(3))
+ fmt.Println(climbStairs(4))
+ fmt.Println(climbStairs(5))
+ fmt.Println(climbStairs(44))
+}