The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+5 votes
1.1k 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$

 

asked in Algorithms by Veteran (68.1k points)
edited by | 1.1k views

3 Answers

+7 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.
answered by Veteran (19.3k points)
selected by
i didnt understand somebody elaborate?
@Apsi_R_Osa see my answer . It may help
+4 votes

Answer 8 . Option B

answered by Veteran (23.2k points)
+3 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.
answered by Veteran (21.4k 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

29,961 questions
37,632 answers
96,400 comments
35,286 users