Форум сайта python.su
def Fibonachi(n): if n == 1: return 1 if n == 2: return 1 if n > 2: return Fibonachi(n - 2) + Fibonachi(n - 1) def productFib(prod): answer = [] for n in range(1, 50): if prod == Fibonachi(n) * Fibonachi(n+1): return [Fibonachi(n), Fibonachi(n+1), True] break if prod != Fibonachi(n) * Fibonachi(n+1) and ((Fibonachi(n) * Fibonachi(n+1)) < prod) : answer.append(Fibonachi(n+1)) answer.append(Fibonachi(n+2)) continue return [answer[-2], answer[-1], False]
def Fibonachi(n): if n == 1: return 1 if n == 2: return 1 if n > 2: return Fibonachi(n - 2) + Fibonachi(n - 1) def productFib(prod): answer = [] n = 1 while Fibonachi(n) * Fibonachi(n+1) < prod: n += 1 if prod == Fibonachi(n) * Fibonachi(n + 1): return [Fibonachi(n), Fibonachi(n + 1), True] break if Fibonachi(n) * Fibonachi(n+1) > prod: return [Fibonachi(n), Fibonachi(n+1), False]
Отредактировано SpyBorgFly (Дек. 28, 2022 18:08:22)
Офлайн
SpyBorgFlyСделай функцию для поиска числа Фибоначчи не через рекурсию, а через цикл.
выходит из строя на тестах с большими числами
Офлайн
import itertools def Fibonacci(a, b): while True: yield a a, b = b, a + b def productFib(): count = 0 for a, b in itertools.islice(zip(Fibonacci(0, 1), Fibonacci(1, 1)), 2, None): print(f'example: {count} ~ {a, b}') count += 1 if count > 10: return ''' example: 0 ~ (1, 2) example: 1 ~ (2, 3) example: 2 ~ (3, 5) example: 3 ~ (5, 8) example: 4 ~ (8, 13) example: 5 ~ (13, 21) example: 6 ~ (21, 34) example: 7 ~ (34, 55) example: 8 ~ (55, 89) example: 9 ~ (89, 144) example: 10 ~ (144, 233) '''
Отредактировано AD0DE412 (Дек. 29, 2022 01:05:53)
Офлайн
def f(): memory = 0 a = 0 b = 1 def process(n): nonlocal a, b, memory if n < memory: a, b = 0, 1 memory = n while True: if a * b == n: return a, b, True elif a * b > n: return a, b, False a, b = b, a + b return process productFib = f() for i in (0, 8, 13, 40, 800, 714, 1000, 1870, 2000): print(productFib(i))
Отредактировано xam1816 (Дек. 29, 2022 17:17:48)
Офлайн
эээ фабричные функции … тоже в эту сторону думалось но чет итератор захотелось сделать … у вас неплохо получилось получилось
Отредактировано AD0DE412 (Дек. 29, 2022 18:05:59)
Офлайн