#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){
int srodek;
printf("L =%d R = %d\n", L, R);
if(A[R]==X){
return R;
}
if( L >= (R-1) && A[L] != X){
printf("jestem tu, powinno wywalic blad\n");
return -1;
}
srodek = (L+R)/2;
if (A[srodek]== X){
return srodek;
}
if( A[srodek] < X){
return szuk_rek(A, X,srodek, R);
}
if( A[srodek] > X){
return szuk_rek(A, X, L,srodek);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAppbnQgc3p1a19yZWsoaW50ICpBLCBpbnQgWCwgaW50IEwsIGludCBSKTsKIAppbnQgbWFpbigpewogICAgCiAgICAgICAgaW50IEFbOV0gPSB7LTEsMiw2LDcsMTIsMTUsNjAsNDI4LDMzOH07CiAgICAgICAgcHJpbnRmKCJsaWN6YmEgamVzdCB3IEFbJWRdID0gJWQiLCBzenVrX3JlayhBLCAxMiwgMCwgNiksIEFbc3p1a19yZWsoQSwgMTEsIDAsIDkpXSk7CiAKIAogICAgICAgIAogICAgICAgIHJldHVybiAwOwp9CiAKaW50IHN6dWtfcmVrKGludCAqQSwgaW50IFgsIGludCBMLCBpbnQgUil7CiAgICBpbnQgc3JvZGVrOwogICAgICAgIHByaW50ZigiTCA9JWQgUiA9ICVkXG4iLCBMLCBSKTsKICAgICAgICBpZihBW1JdPT1YKXsKICAgICAgICAgICAgICAgIHJldHVybiBSOwogICAgICAgIH0KICAgICAgICBpZiggTCA+PSAoUi0xKSAmJiBBW0xdICE9IFgpewogICAgICAgICAgICAgICAgcHJpbnRmKCJqZXN0ZW0gdHUsIHBvd2lubm8gd3l3YWxpYyBibGFkXG4iKTsKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CiAgICAgICAgc3JvZGVrID0gKEwrUikvMjsKIAogICAgICAgIGlmIChBW3Nyb2Rla109PSBYKXsKICAgICAgICAgICAgICAgIHJldHVybiBzcm9kZWs7CiAgICAgICAgfQogCiAgICAgICAgaWYoIEFbc3JvZGVrXSA8IFgpewogICAgICAgICAgICAgICAgcmV0dXJuIHN6dWtfcmVrKEEsIFgsc3JvZGVrLCBSKTsKICAgICAgICB9CiAgICAgICAgaWYoIEFbc3JvZGVrXSA+IFgpewogICAgICAgICAgICAgICAgcmV0dXJuIHN6dWtfcmVrKEEsIFgsIEwsc3JvZGVrKTsKICAgICAgICB9CiAgICAgICAgCn0=