509. 斐波那契数
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给你 n ,请计算 F(n) 。
//自顶向下,分治+记忆化func fib(n int) int {if n <= 1 {return n}nums := make([]int, 31)nums[0] = 0nums[1] = 1for i:= 2; i<= n; i++ {nums[i] = nums[i-1] +nums[i-2] //这就是记忆化,空间On,但是节约了每层查找}return nums[n]}
//动规,自底向上for 时间On,空间O1
func fib(n int) int {
if n < 2 {
return n //结束条件,递归起点
}
a, b := 0, 1
temp := 0 //初始条件
for i:= 2; i<= n; i++ { //最优子结构,dp核心,只考虑自己和手下
temp = a + b
a = b
b = temp
}
return temp
}
