Skip to content

Commit cd487f5

Browse files
authored
Add files via upload
1 parent c5310a6 commit cd487f5

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

go/10_recursion/Factorial.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package Recursion
2+
3+
// 迭代实现阶乘
4+
type Fac struct {
5+
val map[int]int
6+
}
7+
8+
func NewFactorial(n int) *Fac {
9+
return &Fac{
10+
make(map[int]int, n),
11+
}
12+
}
13+
14+
func (fac *Fac) Factorial(n int) int {
15+
if fac.val[n] != 0{
16+
return fac.val[n]
17+
}
18+
19+
if n <= 1{
20+
fac.val[n] = 1
21+
return 1
22+
}else {
23+
res := n * fac.Factorial(n-1)
24+
fac.val[n] =res
25+
return res
26+
}
27+
}
28+
29+
func (fac *Fac) Print(n int ) {
30+
println(fac.val[n])
31+
}

go/10_recursion/Factorial_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package Recursion
2+
3+
import "testing"
4+
5+
func TestFac_Factorial(t *testing.T) {
6+
fac := NewFactorial(10)
7+
for i:=1; i<15; i++{
8+
fac.Factorial(i)
9+
fac.Print(i)
10+
}
11+
}

go/10_recursion/Fibonacci.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package Recursion
2+
3+
import "fmt"
4+
5+
// 递归实现斐波那契数列
6+
type Fibs struct {
7+
val map[int]int // 使用字典存储结果
8+
}
9+
10+
func NewFibs(n int) *Fibs {
11+
return &Fibs{
12+
make(map[int]int, n),
13+
}
14+
}
15+
16+
func (fib *Fibs)Fibonacci(n int) int {
17+
if fib.val[n] != 0{
18+
return fib.val[n]
19+
}
20+
if n <= 1 {
21+
fib.val[1] = 1
22+
return 1
23+
}else if n ==2{
24+
fib.val[2] = 1
25+
return 1
26+
} else {
27+
res := fib.Fibonacci(n-1) + fib.Fibonacci(n-2)
28+
fib.val[n] = res
29+
return res
30+
}
31+
}
32+
33+
func (fib *Fibs)Print(n int) {
34+
fmt.Println(fib.val[n])
35+
}

go/10_recursion/Fibonacci_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package Recursion
2+
3+
import "testing"
4+
5+
func TestFibs_Fibonacci(t *testing.T) {
6+
fib := NewFibs(10)
7+
for i:=1; i<15; i++{
8+
fib.Fibonacci(i)
9+
fib.Print(i)
10+
}
11+
}

0 commit comments

Comments
 (0)