GO语言的斐波那契的三种写法
比较:最好的是第一种和第三种,算法复杂度好:时间0 ms 内存1.8 MB,大概是这个
第二种时间复杂度太高了 时间12 ms 内存1.8 MB
第一种
递归+备忘录
func fib(n int) int {
return dfs(n)
}
var m map[int]int = make(map[int]int)
func dfs(n int)int{
if n < 2 {
return n
}
// 读取缓存
if m[n] != 0 {
return m[n]
}
ans:=dfs(n-1)+dfs(n-2)
// 存缓存
m[n] = ans
return ans
}
第二种
递归
func fib(n int) int {
if n < 2 {
return n
}
return fib(n-1)+fib(n-2)
}
第三种
for循环
func fib(n int) int {
if n < 2 {
return n
}
a, b, c := 0,1,0
for i := 1; i < n; i++ {
c = a+b
a,b = b,c
}
return c
}