Кто-нибудь, пожалуйста, объясните мне алгоритм поиска Фибоначчи.
Я перепробовал множество ресурсов и много искал, но алгоритм все еще неясен. Большинство ресурсов описывают его в связи с двоичным поиском, но я их не понял. Я знаю, что алгоритм поиска Фибоначчи является расширением двоичного поиска, о котором я знаю неплохо.
Мои книги тоже не могли объяснить.
Я знаю о числах Фибоначчи, определенных как F (n) = F (n-1) + F (n-2), поэтому нет необходимости объяснять это.
Обновление вопроса путем добавления того, что именно я не понял, поскольку @AnthonyLabarre сказал:
В книге, которую я использую, есть странные символы без каких-либо объяснений. Разместив здесь алгоритм, пожалуйста, помогите.
if(key == a[mid]) return mid; // understood this, comes from binary search
if(key > a[mid]) {
if(p == 1) return -1; // What is p? It comes as a function arg
mid = mid + q; //Now what's this q? Again comes a function arg
p = p - q; // Commented as p=fib(k-4)
q = q-p; // q = fib(k-5)
} else // key < a[mid] {
if(q == 0) return -1;
mid = mid - q;
temp = p - q;
p = q; // p=fib(k-3)
q = temp; // q = fib(k-4)
return fibsearch(a, key, mid, p, q);
}