# GATE | Gate IT 2008 | Question 80

• Last Updated : 28 Jun, 2021

Consider the code fragment written in C below :

 `void` `f (``int` `n) ` `{ ` `    ``if` `(n <= 1)  { ` `        ``printf` `(``"%d"``, n); ` `    ``} ` `    ``else` `{ ` `        ``f (n/2); ` `        ``printf` `(``"%d"``, n%2); ` `    ``} ` `} `

Which of the following implementations will produce the same output for f(173) as the above code?
P1

 `void` `f (``int` `n) ` `{ ` `    ``if` `(n/2)  { ` `        ``f(n/2); ` `    ``} ` `    ``printf` `(``"%d"``, n%2); ` `} `

P2

 `void` `f (``int` `n) ` `{ ` `    ``if` `(n <=1)  { ` `        ``printf` `(``"%d"``, n); ` `    ``} ` `    ``else` `{ ` `        ``printf` `(``"%d"``, n%2); ` `        ``f (n/2); ` `    ``} ` `} `

(A) Both P1 and P2
(B) P2 only
(C) P1 only
(D) Neither P1 nor P2

Explanation:

Here, basically the function f prints the binary representation of the number.
function f1 also prints the binary representation of the number
function f2 prints the binary representation but in reverse order.
Output of f  is:- 10101101
Output of f1 is:- 10101101
Output of f2 is:- 10110101

So, the answer is option (C) which is P1 only.

This solution is contributed  by Anil Saikrishna Devarasetty.

Quiz of this Question

My Personal Notes arrow_drop_up
Related Articles