Skip to content

Commit a5ed8a1

Browse files
authored
Merge pull request kelvins#276 from metacoder87/patch-14
Create fibonacci_recursiva.py
2 parents e908aab + b9bdd10 commit a5ed8a1

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/python/fibonacci_recursiva.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""
2+
Implementaço de vários algoritmos Fibonacci
3+
4+
A lib "time" foi utilizada para marcar o tempo de
5+
execução dos algoritmos em segundos
6+
"""
7+
8+
import functools
9+
import time
10+
11+
def fib_recursiva(number):
12+
"""Fibonnaci recursiva."""
13+
if number < 2:
14+
return number
15+
return fib_recursiva(number - 1) + fib_recursiva(number - 2)
16+
17+
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):
27+
"""
28+
Roda o algoritmo e mostra o tempo de execução dele
29+
"""
30+
start_time = time.time()
31+
result = func(number)
32+
diff_time = time.time() - start_time
33+
print("Fibonacci", name, ":", result, ":", "%.8f" % diff_time, "segundos")
34+
35+
36+
if __name__ == "__main__":
37+
run_fibonacci("Recursiva", fib_recursiva)
38+
run_fibonacci("Recursiva com Cache", fib_recursiva_com_cache)

0 commit comments

Comments
 (0)