Я пытаюсь создать функцию, которая дает мне последовательность Фибоначчи для любого значения n.Однако после n = 92 я получаю неправильные ответы.
eg. For n = 93
Expected output = 12200160415121876738
Actual Output = -6246583658587674878
Мой код ниже:
import numpy as np
def Power(M, n):
if not n:
return 1
elif n % 2:
return M*Power(M, n-1)
else:
sqrt = Power(M, n//2)
return sqrt**2
def _fib(n):
G = np.matrix([[1,1],[1,0]])
F = Power(G, n)
return F[0,1]
Я думаю, что это как-то связано с целочисленным переполнением, связанным с ограничением библиотеки матриц.Я не уверен, как это исправить.Пожалуйста, помогите мне.Я бы предпочел, чтобы этот алгоритм был улучшен.
Используемый алгоритм: