Fibonacci
Definition
f(0)=0
f(0)=0
f(1)=1
f(1)=1
f(n)=f(n-1)+f(n-2)
f(n)=f(n−1)+f(n−2)
Recursive
function f(n)
if n == 0
return 0
else if n == 1
return 1
else
return f(n-1)+f(n-2)Recursive
f(3)
f(3)
f(2)
f(2)
f(1)
f(1)
f(0)
f(0)
f(1)
f(1)
Recursive
f(5)
f(5)
f(2)
f(2)
f(1)
f(1)
f(0)
f(0)
f(1)
f(1)
f(4)
f(4)
f(3)
f(3)
f(2)
f(2)
f(0)
f(0)
f(1)
f(1)
f(2)
f(2)
f(1)
f(1)
f(0)
f(0)
f(1)
f(1)
f(3)
f(3)
Recursive
how about f(1000000)???
f(1000000)
f(1000000)
f(999999)
f(999999)
f(999998)
f(999998)
f(1)
f(1)
f(0)
f(0)
f(0)
f(0)
f(0)
f(0)
f(0)
f(0)
f(0)
f(0)
too slow!!! TLE
Memorize Search
但是這不是今天的重點
把算過的東西記起來
重點
不要重複計算
Iterative
f[0] = 0
f[1] = 1
for i = 2~N
f[i] = f[i-1] + f[i-2]Iterative
f(0)
f(0)
f(1)
f(1)
f(2)
f(2)
f(3)
f(3)
f(4)
f(4)
f(5)
f(5)
f(6)
f(6)
f(7)
f(7)
f(8)
f(8)
0
0
1
1
1
1
2
2
3
3
13
13
8
8
5
5
21
21
only n-1 times addition for f(n)!! fast
Advance
faster?
yes!! fast exponential
fibonacci
By allenwhale
fibonacci
- 702