Jun 132012
 C Tags:  Add comments

What will the below function return when it is called for n=1 as fun(1). Treat is as the first call to fun function, so i is not initialized earlier.

    int fun(int n)
        static int i = 1;

        if (n >= 5)
            return n;

        n += i;
        return fun(n);

Your options are

A) 5    B) 6  C)7    D) 8

This question was asked in the GATE (Computer Science) Exam.

Answer: C)  7

Note that i is static variable, so it will be initialized only once. And it is only incremented by 1 per call (unlike n)

Function Call i n Incremented i
fun(1) 1 2 2
fun(2) 2 4 3
fun(4) 3 7

Hence the final value returned will be 7.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>