Итак, мы видим много вопросов о фибоначчи. Я лично их ненавижу. Много. Больше, чем много. Я думал, что это будет аккуратно, если, возможно, мы сможем сделать невозможным когда-либо использовать его снова как вопрос интервью. Посмотрим, как близко к O (1) мы можем получить фибоначчи.
Здесь мой удар, довольно много извинился из Википедии, с, конечно, большим запасом. Важно отметить, что это решение будет взорваться для любого особо большого фига, и оно содержит относительно наивное использование силовой функции, которая в худшем случае помещает ее в O (log (n)), если ваши библиотеки не очень хороши. Я подозреваю, что мы можем избавиться от силовой функции или хотя бы специализировать ее. Кто-нибудь за помощь? Существует ли истинное решение O (1), отличное от конечного * решения использования справочной таблицы?
#include <iostream>
#include <math.h>
using namespace std; // would never normally do this.
int main()
{
int target = 10;
cin >> target;
// should be close enough for anything that won't make us explode anyway.
float mangle = 2.23607610;
float manglemore = mangle;
++manglemore; manglemore = manglemore / 2;
manglemore = pow(manglemore, target);
manglemore = manglemore/mangle;
manglemore += .5;
cout << floor(manglemore);
}
* Я знаю, я знаю, этого достаточно для любого из нулевых практических применений, связанных с фибоначчи.