#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int szuk_rek(int *A, int X, int L, int R);
int main(){
int A[9] = {-1,2,6,7,12,15,60,428,338};
printf("liczba jest w A[%d] = %d", szuk_rek(A, 12, 0, 6), A[szuk_rek(A, 11, 0, 9)]);
return 0;
}
int szuk_rek(int *A, int X, int L, int R){
printf("L =%d R = %d\n", L, R);
if(A[L] > X || A[R] < X){
return 0;
}
if(A[R]==X){
return R;
}
if(L > R){
return -1;
}
if( L >= (R-1) && A[L] != X){
printf("jestem tu, powinno wywalic blad\n");
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);
}
if( A[(L+R)/2] > X){
return szuk_rek(A, X, L, (L + R)/2);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAppbnQgc3p1a19yZWsoaW50ICpBLCBpbnQgWCwgaW50IEwsIGludCBSKTsKIAppbnQgbWFpbigpewogICAgCiAgICAgICAgaW50IEFbOV0gPSB7LTEsMiw2LDcsMTIsMTUsNjAsNDI4LDMzOH07CiAgICAgICAgcHJpbnRmKCJsaWN6YmEgamVzdCB3IEFbJWRdID0gJWQiLCBzenVrX3JlayhBLCAxMiwgMCwgNiksIEFbc3p1a19yZWsoQSwgMTEsIDAsIDkpXSk7CiAKIAogICAgICAgIAogICAgICAgIHJldHVybiAwOwp9CiAKaW50IHN6dWtfcmVrKGludCAqQSwgaW50IFgsIGludCBMLCBpbnQgUil7CiAgICAgICAgcHJpbnRmKCJMID0lZCBSID0gJWRcbiIsIEwsIFIpOwogICAgICAgIGlmKEFbTF0gPiBYIHx8IEFbUl0gPCBYKXsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZihBW1JdPT1YKXsKICAgICAgICAgICAgICAgIHJldHVybiBSOwogICAgICAgIH0KICAgICAgICBpZihMID4gUil7CiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgIGlmKCBMID49IChSLTEpICYmIEFbTF0gIT0gWCl7CiAgICAgICAgICAgICAgICBwcmludGYoImplc3RlbSB0dSwgcG93aW5ubyB3eXdhbGljIGJsYWRcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KIAogICAgICAgIGlmIChBWyhMK1IpLzJdPT0gWCl7CiAgICAgICAgICAgICAgICByZXR1cm4gKEwrUikvMjsKICAgICAgICB9CiAKICAgICAgICBpZiggQVsoTCtSKS8yXSA8IFgpewogICAgICAgICAgICAgICAgcmV0dXJuIHN6dWtfcmVrKEEsIFgsIChMICsgUikvMiwgUik7CiAgICAgICAgfQogICAgICAgIGlmKCBBWyhMK1IpLzJdID4gWCl7CiAgICAgICAgICAgICAgICByZXR1cm4gc3p1a19yZWsoQSwgWCwgTCwgKEwgKyBSKS8yKTsKICAgICAgICB9CiAgICAgICAgCn0=