Comments 11
А готовая формула из википедии чем не подошла?
В самом начале стоит цель искать n-ое число за линейное от N время, при этом в итоге строится полином, который даёт ответ за константное время.
Если цель была искать за O(1), то, пожалуй, могу согласиться с комменатором выше, предложившим готовую формулу, хоть и имеющую недостатки из-за округлений.
Если же хотелось всё-таки быстрее, чем за линейное время, но не за константу, то уж лучше использовать быстрое матричное умножение, дающее ответ за O(log N)
X = np.array([i for i in range(1, n + 1)])
Зачем эта кустарщина, когда есть np.arange
?
X = np.arange(1, n + 1)
Тут, вообще-то, изобретать ничего не нужно: половина чисел Фибоначчи -- это значения гиперболического синуса, а другая половина -- гиперболического косинуса.
Задача про n-ое число Фибоначчи