edited by
11,152 views
26 votes
26 votes

Consider the program below:

#include <stdio.h>
int fun(int n, int *f_p) {
    int t, f;
    if (n <= 1) {
        *f_p = 1;
        return 1;
    }
    t = fun(n-1, f_p);
    f = t + *f_p;
    *f_p = t;
    return f;
}

int main() {
    int x = 15;
    printf("%d/n", fun(5, &x));
    return 0;
}

The value printed is:

  1. $6$
  2. $8$
  3. $14$
  4. $15$
edited by

4 Answers

Best answer
22 votes
22 votes

The answer is $B$.

Let the address of $x$ be $1000.$

  1. $f(5,1000)$ $=$ $8$
  2. $f(4,1000)$ $=$ $5$
  3. $f(3,1000)$ $=$ $3$
  4. $f(2,1000)$ $=$ $2$
  5. $f(1,1000)$ $=$ $1$.


The evaluation is done from $5$ to $1$. Since recursion is used.

edited by
24 votes
24 votes

Note:- Before calling the function the rest of the code are first push into stack then we are going to execute function definition.

Plz follow the below diagram carefully.

Hence 8 is the ans.
13 votes
13 votes

Answer 8 . Option B

3 votes
3 votes

Here is traced out Recursion tree for more clarification.

Answer: (B) 8

Answer:

Related questions

18 votes
18 votes
2 answers
3
26 votes
26 votes
4 answers
4