studia/jezyki-skryptowe/lista7/zad5.py
2024-06-14 16:53:58 +02:00

36 lines
780 B
Python

from functools import cache
def make_generator(f):
n = 1
while True:
yield f(n)
n += 1
def make_generator_mem(f):
@cache
def cached_f(n):
return f(n)
return make_generator(f)
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
if __name__ == "__main__":
print("fibonacci 10 next terms")
fib_generator = make_generator_mem(fibonacci)
for x in range(10):
print(next(fib_generator))
print("square generator")
square_generator = make_generator_mem(lambda x : x**2)
for x in range(10):
print(next(square_generator))
print("ones generator")
one_generator = make_generator_mem(lambda x : 1)
for x in range(10):
print(next(one_generator))