Существует множество способов вычисления F (n) для любого n, многие из которых имеют отличную среду исполнения и использования памяти.
Однако предположим, что я хотел задать противоположный вопрос:
Для F (n) при n > 2, что n?
(Существует ограничение n > 2, так как F (1) = F (2) = 1 и нет однозначного обратного).
Каким будет наиболее эффективный способ решения этой проблемы? Это легко сделать в линейном времени, перечислив числа Фибоначчи и остановившись, когда вы нажмете на целевой номер, но есть ли способ сделать это быстрее, чем это?
EDIT:, лучшее решение, размещенное здесь, выполняется в O (log n) времени с использованием O (log n) памяти, предполагая, что математические операции выполняются в O (1) и что машинное слово может содержать любое число в O (1) пространстве. Мне интересно, если можно отказаться от требований к памяти, так как вы можете вычислить числа Фибоначчи, используя O (1) пространство.