#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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgppbnQgc3p1a19yZWsoaW50ICpBLCBpbnQgWCwgaW50IEwsIGludCBSKTsKCmludCBtYWluKCl7CiAgICAKCWludCBBWzldID0gey0xLDIsNiw3LDEyLDE1LDYwLDQyOCwzMzh9OwoJcHJpbnRmKCJsaWN6YmEgamVzdCB3IEFbJWRdID0gJWQiLCBzenVrX3JlayhBLCAxMiwgMCwgNiksIEFbc3p1a19yZWsoQSwgMTEsIDAsIDkpXSk7CgoKCQoJcmV0dXJuIDA7Cn0KCmludCBzenVrX3JlayhpbnQgKkEsIGludCBYLCBpbnQgTCwgaW50IFIpewoJcHJpbnRmKCJMID0lZCBSID0gJWRcbiIsIEwsIFIpOwoJaWYoQVtMXSA+IFggfHwgQVtSXSA8IFgpewoJCXJldHVybiAwOwoJfQoJaWYoQVtSXT09WCl7CgkJcmV0dXJuIFI7Cgl9CglpZihMID4gUil7CgkJcmV0dXJuIC0xOwoJfQoJaWYoIEwgPT0gKFItMSkgJiYgQVtMXSAhPSBYKXsKCQlwcmludGYoImplc3RlbSB0dSwgcG93aW5ubyB3eXdhbGljIGJsYWRcbiIpOwoJCXJldHVybiAtMTsKCX0KCglpZiAoQVsoTCtSKS8yXT09IFgpewoJCXJldHVybiAoTCtSKS8yOwoJfQoKCWlmKCBBWyhMK1IpLzJdIDwgWCl7CgkJcmV0dXJuIHN6dWtfcmVrKEEsIFgsIChMICsgUikvMiwgUik7Cgl9CglpZiggQVsoTCtSKS8yXSA+IFgpewoJCXJldHVybiBzenVrX3JlayhBLCBYLCBMLCAoTCArIFIpLzIpOwoJfQoJCn0=