Время выполнения составляет 2F (n + 1) - 1 вызов, где n - это n-е число Фибоначчи.
Вот быстрое индуктивное доказательство:
В качестве базового случая, если n =0 или n = 1, тогда мы делаем ровно один вызов, и F (1) = F (2) = 1, и мы имеем, что 2F (n + 1) - 1 = 1.
Для индуктивногошаг, если n> 1, то мы делаем столько вызовов, сколько необходимо для оценки функции на n-1 и n-2.Согласно индуктивной гипотезе, для завершения этого процесса требуется 2F (n) - 1 + 2F (n-1) - 1 = 2F (n + 1) - 2 рекурсивных вызова.Однако, поскольку мы считаем текущий вызов функции, мы добавляем к нему один, чтобы получить 2F (n + 1) - 1, как требуется.
Обратите внимание, что 2F (n + 1) - 1 является выражением дляn-е число Леонардо, где
L (0) = L (1) = 1
L (n + 2) = L (n) + L (n + 1) + 1
Который растет при Θ (Φ n ), как указывает Саид.Однако этот ответ математически точен.
Это более точная среда выполнения, которая вас интересует, поскольку вам нужно учитывать работу, выполняемую в каждом рекурсивном вызове.Если вы отбросите +1 член, вы просто получите серию Фибоначчи!