Recur5. Описать рекурсивную функцию Fib2(N) целого типа, вычисляющую N-й элемент последовательности чисел Фибоначчи (N — целое число):
\(F_1 = F_2 = 1, \quad F_K = F_{K-2} + F_{K-1}, \quad K = 3, 4, ...\) .
Считать, что номер N не превосходит 20. Для уменьшения количества рекурсивных вызовов по сравнению с функцией Fib1 (см. задание Recur4) создать вспомогательный массив для хранения уже вычисленных чисел Фибоначчи и обращаться к нему при выполнении функции Fib2. С помощью функции Fib2 найти пять чисел Фибоначчи с данными номерами.

Решение на Python 3:

import random

fib = []

def Fib1(N):
if N < len(fib):
#print("Fast")
return fib[N-1]
if N == 1 or N == 2:
if N > len(fib):
fib.append(1)
return 1
#print("Slow")
y = Fib1(N-2) + Fib1(N-1)
if N > len(fib):
fib.append(y)
return y

for i in range(5):
N = random.randrange(5,25)
print("N = ",N)
y = Fib1(N)
print("Fibonacci Number: ", y)
print("Fibonacci Array: ", fib)