**Recursion Solution**

The intuition behind this solution is that for range Bitwise And of numbers between m and n (inclusive) is that their highest 1 bit should be same.

For ex

for 6(110) and 7(111) highest bit of both numbers are same (3rd bit).

The reason behind this is that between m and n if there exists a power of 2 then for BitwiseAnd of range to be greater than zero all the numbers should have this bit true else BitwiseAnd will be zero.If all numbers lie between two powers of 2 then bitwiseAnd will further be calculated using recursion for remaining range.

```
public int rangeBitwiseAnd(int m, int n) {
if(m==0){return 0;}
int x1=get(m); //Get highest bit of m
int x2=get(n);//Get highest bit of n
if(x1!=x2){return 0;}
int k=(1<<x1);
return k+rangeBitwiseAnd(m%k,n%k);
}
public static int get(int m){
int a=0;
while(m>1){
a++;m=m/2;
}
return a;
}
```