题目描述:求斐波那契数列的第 n 项。

i c } m l p a o s r s f } f } t u u F n n F o c c o r i } i } i } r i } i } v v v f } r u 0 F f f f e F f f a a a o e n 9 i t i r r r r t d S b n n u b n n u a o o r r n r r o r r l l r i i } r t l n < e = e e n n = e = e a a e f n i u a = t = t > t a = t = t s s s i o t c u u u 0 c u u t t n i r n i c 0 r 1 r 1 r c 0 r 1 r l = r l l e o i n n n i n n a = 0 > e a a s n ( { { { 2 { { s 0 . s s s _ 0 1 F ( 0 1 t 1 . 1 t t { i _ < = l n b = n { a = : o n + l s n : 0 1 a t r I a s e n c I { t = s t c n ) i t + l ( ) a n l s - a t 1 s I ) t n I l t + n a t s { F t i { b o n a c c i ( n - 2 )

算法思想:如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。

github地址:https://github.com/cubegao/LeetCode