Kod: Zaznacz cały
function divide(x,y)
Wejście : dwie n - bitowe liczby całkowite x i y, y >= 1
Wyjście : iloraz oraz reszta z dzielenia x przez y
if x = 0 : (q,r) = (0,0)
(q,r) = divide(floor(x/2),y)
q = 2q, r = 2r
if x jest nieparzyste : r = r + 1
if r >= y : r = r - y, q = q + 1
return (q,r)
Kod: Zaznacz cały
r = r - y
Inne podejście
\(\displaystyle{ T(n) = \begin{cases} O(1) , n \le 1\\ T\left(\frac{n}{2}\right) + O(n), n > 1 \end{cases}}\)
Korzystając z tw. o rekurencji uniwersalnej mamy \(\displaystyle{ g(n) = n ^{\log_2 1} = 1}\)
\(\displaystyle{ g(n)}\) jest wielomianowo mniejszy od \(\displaystyle{ f(n)}\) więc \(\displaystyle{ T(n) = \Theta(n)}\)
Skąd ta różnica ?