#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int szuk_rek(int *A, int X, int L, int R);
int main(){
int A[7] = {1,2,6,8,9,10,12};
printf("liczba jest w A[%d] = %d", szuk_rek(A, 12, 0, 6), A[szuk_rek(A, 12, 0, 6)]);
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 && A[L] != X){
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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgppbnQgc3p1a19yZWsoaW50ICpBLCBpbnQgWCwgaW50IEwsIGludCBSKTsKCmludCBtYWluKCl7CiAgICAKCWludCBBWzddID0gezEsMiw2LDgsOSwxMCwxMn07CglwcmludGYoImxpY3piYSBqZXN0IHcgQVslZF0gPSAlZCIsIHN6dWtfcmVrKEEsIDEyLCAwLCA2KSwgQVtzenVrX3JlayhBLCAxMiwgMCwgNildKTsKCgoJCglyZXR1cm4gMDsKfQoKaW50IHN6dWtfcmVrKGludCAqQSwgaW50IFgsIGludCBMLCBpbnQgUil7CglwcmludGYoIkwgPSVkIFIgPSAlZFxuIiwgTCwgUik7CglpZihBW0xdID4gWCB8fCBBW1JdIDwgWCl7CgkJcmV0dXJuIDA7Cgl9CglpZihBW1JdPT1YKXsKCQlyZXR1cm4gUjsKCX0KCWlmKEwgPiBSKXsKCQlyZXR1cm4gLTE7Cgl9CglpZiggTCA9PSBSICYmIEFbTF0gIT0gWCl7CgkJcmV0dXJuIC0xOwoJfQoKCWlmIChBWyhMK1IpLzJdPT0gWCl7CgkJcmV0dXJuIChMK1IpLzI7Cgl9CgoJaWYoIEFbKEwrUikvMl0gPCBYKXsKCQlyZXR1cm4gc3p1a19yZWsoQSwgWCwgKEwgKyBSKS8yLCBSKTsKCX0KCWlmKCBBWyhMK1IpLzJdID4gWCl7CgkJcmV0dXJuIHN6dWtfcmVrKEEsIFgsIEwsIChMICsgUikvMik7Cgl9CgkKfQ==