// A[] - tablica posortowanych wartosci, X - szukana wartosc, L - lewy koniec, R - prawy koniec
szuk_rek( A[], X, L, R)
{
if( L > R ){ // sprzecznosc;
return -1;
}
if( L == R && A[L] == X){
return L;
} else {
return -1;
}
if ( A[(L + R)/2]== X){
return (L + R)/2;
}
if ( A[(L + R)/2 < X){
return szuk_rek(A[], X, (L + R)/2, R ) // L = L+R/2
}
if ( A[(L + R)/2 > X){
return szuk_rek(A[], X, L, (L + R)/2 ) // R = L+R/2
}
}
CgovLyBBW10gLSB0YWJsaWNhIHBvc29ydG93YW55Y2ggd2FydG9zY2ksIFggLSBzenVrYW5hIHdhcnRvc2MsIEwgLSBsZXd5IGtvbmllYywgUiAtIHByYXd5IGtvbmllYwpzenVrX3JlayggQVtdLCBYLCBMLCBSKQp7CiAgICBpZiggTCA+IFIgKXsgLy8gc3ByemVjem5vc2M7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgaWYoIEwgPT0gUiAmJiBBW0xdID09IFgpewogICAgICAgIHJldHVybiBMOwogICAgfSBlbHNlIHsgCiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgaWYgKCBBWyhMICsgUikvMl09PSBYKXsKICAgICAgICByZXR1cm4gKEwgKyBSKS8yOwogICAgfQogICAgaWYgKCBBWyhMICsgUikvMiA8IFgpewogICAgICAgIHJldHVybiBzenVrX3JlayhBW10sIFgsIChMICsgUikvMiwgUiApIC8vIEwgPSBMK1IvMgogICAgfQogICAgaWYgKCBBWyhMICsgUikvMiA+IFgpewogICAgICAgIHJldHVybiBzenVrX3JlayhBW10sIFgsIEwsIChMICsgUikvMiApIC8vIFIgPSBMK1IvMgogICAgfQp9