Поиск по Фибоначчи

Кто-нибудь, пожалуйста, объясните мне алгоритм поиска Фибоначчи.

Я перепробовал множество ресурсов и много искал, но алгоритм все еще неясен. Большинство ресурсов описывают его в связи с двоичным поиском, но я их не понял. Я знаю, что алгоритм поиска Фибоначчи является расширением двоичного поиска, о котором я знаю неплохо.

Мои книги тоже не могли объяснить.

Я знаю о числах Фибоначчи, определенных как 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);
}
5
задан David Nehme 29 September 2011 в 15:44
поделиться