36 lines
533 B
Go
36 lines
533 B
Go
package Recursion
|
|
|
|
import "fmt"
|
|
|
|
// 递归实现斐波那契数列
|
|
type Fibs struct {
|
|
val map[int]int // 使用字典存储结果
|
|
}
|
|
|
|
func NewFibs(n int) *Fibs {
|
|
return &Fibs{
|
|
make(map[int]int, n),
|
|
}
|
|
}
|
|
|
|
func (fib *Fibs)Fibonacci(n int) int {
|
|
if fib.val[n] != 0{
|
|
return fib.val[n]
|
|
}
|
|
if n <= 1 {
|
|
fib.val[1] = 1
|
|
return 1
|
|
}else if n ==2{
|
|
fib.val[2] = 1
|
|
return 1
|
|
} else {
|
|
res := fib.Fibonacci(n-1) + fib.Fibonacci(n-2)
|
|
fib.val[n] = res
|
|
return res
|
|
}
|
|
}
|
|
|
|
func (fib *Fibs)Print(n int) {
|
|
fmt.Println(fib.val[n])
|
|
}
|