The given program uses recursion and bitwise XOR and AND operators along with left shift operator which doubles the current value.
The initial call is : operation(12,15) and hence according to the code
12 XOR 15 = 3 and 12 AND 15 = 12.In the code , the result of AND is left shifted which is also 2nd parameter so 12 * 2 = 24.
So now operation(3,24) is called and hence :
3 XOR 24 = 27 and 3 AND 24 = 0 which is left shifted to get 0 * 2 = 0
So now operation (27,0) is called and now termination since 2nd parameter is 0 and we return x which is the 1st parameter which is 27 in our case.
So 27 is returned finally and hence D) is the correct option