Skip to content

Commit c928e2a

Browse files
committed
Fix Fibonacci in Python
1 parent 4dc7292 commit c928e2a

File tree

3 files changed

+27
-29
lines changed

3 files changed

+27
-29
lines changed

src/python/fibonacci_iterativa.py renamed to src/python/fibonacci_iterative.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import time
1010

1111

12-
def fib_iterativa(number):
12+
def fibonacci(number):
1313
"""Fibonacci iterativa."""
1414
last = 0
1515
curr = 1
@@ -18,7 +18,7 @@ def fib_iterativa(number):
1818
return last
1919

2020

21-
def run_fibonacci(name, func, number=35):
21+
def main(name, func, number=35):
2222
"""
2323
Roda o algoritmo e mostra o tempo de execução dele
2424
"""
@@ -29,4 +29,4 @@ def run_fibonacci(name, func, number=35):
2929

3030

3131
if __name__ == "__main__":
32-
run_fibonacci("Iterativa", fib_iterativa)
32+
main("Iterativa", fibonacci)

src/python/fibonacci_memoization.py

+20-12
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
1-
def fibonacci(n, memo={}):
2-
if n <= 1:
3-
return 1
1+
import functools
2+
import time
43

5-
# Check if the result is already memoized
6-
if n in memo:
7-
return memo[n]
84

9-
# Calculate Fibonacci recursively and store the result in memoization
10-
result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo)
11-
memo[n] = result
5+
@functools.lru_cache(maxsize=None)
6+
def fibonacci(number):
7+
"""Fibonacci recursiva com cache."""
8+
if number < 2:
9+
return number
10+
return fibonacci(number - 1) + fibonacci(number - 2)
1211

13-
return result
1412

15-
n = 16
16-
print(f"Fib({n}): {fibonacci(n)}")
13+
def main(name, func, number=35):
14+
"""
15+
Roda o algoritmo e mostra o tempo de execução dele
16+
"""
17+
start_time = time.time()
18+
result = func(number)
19+
diff_time = time.time() - start_time
20+
print("Fibonacci", name, ":", result, ":", "%.8f" % diff_time, "segundos")
21+
22+
23+
if __name__ == "__main__":
24+
main("Fibonacci Memoization:", fibonacci)

src/python/fibonacci_recursiva.py

+4-14
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,16 @@
55
execução dos algoritmos em segundos
66
"""
77

8-
import functools
98
import time
109

11-
def fib_recursiva(number):
10+
def fibonacci(number):
1211
"""Fibonnaci recursiva."""
1312
if number < 2:
1413
return number
15-
return fib_recursiva(number - 1) + fib_recursiva(number - 2)
14+
return fibonacci(number - 1) + fibonacci(number - 2)
1615

1716

18-
@functools.lru_cache(maxsize=None)
19-
def fib_recursiva_com_cache(number):
20-
"""Fibonacci recursiva com cache."""
21-
if number < 2:
22-
return number
23-
return fib_recursiva_com_cache(number - 1) + fib_recursiva_com_cache(number - 2)
24-
25-
26-
def run_fibonacci(name, func, number=35):
17+
def main(name, func, number=35):
2718
"""
2819
Roda o algoritmo e mostra o tempo de execução dele
2920
"""
@@ -34,5 +25,4 @@ def run_fibonacci(name, func, number=35):
3425

3526

3627
if __name__ == "__main__":
37-
run_fibonacci("Recursiva", fib_recursiva)
38-
run_fibonacci("Recursiva com Cache", fib_recursiva_com_cache)
28+
main("Recursiva", fibonacci)

0 commit comments

Comments
 (0)