fibonacci without functools (to work in pypy)
This commit is contained in:
parent
d8bb8d8aba
commit
904caf85ae
@ -1,5 +1,5 @@
|
||||
import math
|
||||
from functools import cache
|
||||
from typing import Dict
|
||||
|
||||
|
||||
def factorial(n: int) -> int:
|
||||
@ -10,8 +10,7 @@ def factorial(n: int) -> int:
|
||||
return math.factorial(n)
|
||||
|
||||
|
||||
@cache
|
||||
def fibonacci(n: int) -> int:
|
||||
def fibonacci(n: int, cache: Dict[int, int] = None) -> int:
|
||||
"""
|
||||
F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1
|
||||
0, 1, 1, 2, 3, 5, 8, 13, 21, ...
|
||||
@ -19,7 +18,13 @@ def fibonacci(n: int) -> int:
|
||||
if n < 2:
|
||||
return n
|
||||
|
||||
return fibonacci(n - 1) + fibonacci(n - 2)
|
||||
if cache is None:
|
||||
cache = {}
|
||||
|
||||
if n not in cache:
|
||||
cache[n] = fibonacci(n - 1, cache) + fibonacci(n - 2, cache)
|
||||
|
||||
return cache[n]
|
||||
|
||||
|
||||
def triangular(n: int) -> int:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user