The Gateway to Computer Science Excellence
+15 votes
2.9k views

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$
in Algorithms by Veteran (52.2k points)
edited by | 2.9k views

3 Answers

+17 votes
Best answer

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.

by Boss (19.9k points)
edited by
0
i didnt understand somebody elaborate?
0
@Apsi_R_Osa see my answer . It may help
+14 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.
by Boss (23.9k points)
+1
This is helpful. Thank-you
0
nice answer.
+11 votes

Answer 8 . Option B

by Boss (21.5k points)
Answer:

Related questions

Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true
50,737 questions
57,302 answers
198,306 comments
105,007 users