-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfib.py
More file actions
50 lines (36 loc) · 843 Bytes
/
fib.py
File metadata and controls
50 lines (36 loc) · 843 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Recursive approach -- O(n^2)
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
# Cached approach -- O(n)
def fib_c(n, f):
print(f)
if f[n] == 'UNKNOWN':
f[n] = fib_c(n-1, f) + fib_c(n-2, f)
return f[n]
def fib_c_driver(n):
f = []
f.append(0)
f.append(1)
for i in range(n+1):
f.append('UNKNOWN') # initialize
return fib_c(n, f)
# Dynamic Programming approach -- O(n)
def fib_dp(n):
f = ["x"] * (n+1)
f[0] = 0
f[1] = 1
for i in range(2, len(f)):
f[i] = (f[i-1]+f[i-2])
return f[n]
def fib_ultimate(n):
back2 = 0 # n = 0
back1 = 1 # n = 1
if n == 0: return 0
for i in range(2,n):
next_num = back1+back2
back2 = back1
back1 = next_num
return back1 + back2
print fib_ultimate(1000)