Я могу вычислить любое нормально вычислимое число финнако (если результат не станет большим) за постоянное время, используя формулу Бине, т.е. формулу замкнутого решения, чтобы вычислить число финнаци. Вот мой код:
для нерекурсивной реализации fibonnaci:
gr = (1 + 5**0.5) / 2
def gfib(n):
return int(((gr**n - (1-gr)**n) / 5**0.5))
Я понимаю, что a ^ n указывает на экспоненциальную сложность времени выполнения, однако это не тот случай, когда код выполняется в python, так как это мгновенно вычисляет n-й номер финнаси. Я провел некоторое исследование того, как экспоненты реализованы в python (возможно, возведение в степень путем квадратизации?), Чтобы дать постоянное временное решение, которое я получаю, но не нашел окончательного ответа. Любые идеи?