Foo(A,f,l)
**Precondition: A[f ...l] is an array of integers, f,l are two naturals ≥ 1 with f ≤ l.
if (f = l) then
return A[f]
else
m ← floor of((f+l)/2)
return min(Foo(A,f,m), Foo(A,m + 1,l))
end if
Исправьте меня, если я ошибаюсь, но я думаю, что этот код возвращает наименьшее целое число массива. Но как я могу выяснить, какое отношение рецидивов описывает сложность времени в терминах массива A? Не могли бы вы направить меня на решение, чтобы я мог понять? Я даже не знаю, с чего начать.Как написать рекуррентное отношение псевдокода?
Возьмем несколько примеров значения A, F, L и сделать то, что звонки сделаны, то есть, полное повторение. Вы увидите, что в каждом проходе пространство поиска сокращается наполовину. Сложность логарифмическая. – Rishav
С этим предварительным условием 'f <= l' вы не можете гарантировать, что оно достигнуто во внутренних вызовах. Кроме того, это кажется бесполезным предварительным условием, возможно, вы должны его удалить. Вы не можете ни гарантировать, что 'm> = 1' –
Посмотрите на это [вопрос] (http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it) – DarthRubik