If [tex]\( x = 5 \)[/tex] and [tex]\( y = 2 \)[/tex], what will the following function return?

```c
int fun1(int x, int y) {
if (x == 0)
return y;
else
return fun1(x - 1, x + y);
}
```

A. 10
B. 7
C. 13
D. 17



Answer :

To determine the result of the function [tex]\( \text{fun1}(x, y) \)[/tex] given [tex]\( x = 5 \)[/tex] and [tex]\( y = 2 \)[/tex], let's work through the function step by step:

1. Initial Call: The function is initially called with [tex]\( x = 5 \)[/tex] and [tex]\( y = 2 \)[/tex].

2. First Iteration: Check if [tex]\( x == 0 \)[/tex]:
[tex]\[ \text{if } x == 0 \text{; (False because } x = 5) \][/tex]
Since [tex]\( x \neq 0 \)[/tex], the function returns [tex]\( \text{fun1}(x - 1, x + y) \)[/tex]:
[tex]\[ \text{fun1}(5 - 1, 5 + 2) = \text{fun1}(4, 7) \][/tex]

3. Second Iteration: Now, the function is called with [tex]\( x = 4 \)[/tex] and [tex]\( y = 7 \)[/tex]:
[tex]\[ \text{if } x == 0 \text{; (False because } x = 4) \][/tex]
Since [tex]\( x \neq 0 \)[/tex], the function returns [tex]\( \text{fun1}(x - 1, x + y) \)[/tex]:
[tex]\[ \text{fun1}(4 - 1, 4 + 7) = \text{fun1}(3, 11) \][/tex]

4. Third Iteration: Now, the function is called with [tex]\( x = 3 \)[/tex] and [tex]\( y = 11 \)[/tex]:
[tex]\[ \text{if } x == 0 \text{; (False because } x = 3) \][/tex]
Since [tex]\( x \neq 0 \)[/tex], the function returns [tex]\( \text{fun1}(x - 1, x + y) \)[/tex]:
[tex]\[ \text{fun1}(3 - 1, 3 + 11) = \text{fun1}(2, 14) \][/tex]

5. Fourth Iteration: Now, the function is called with [tex]\( x = 2 \)[/tex] and [tex]\( y = 14 \)[/tex]:
[tex]\[ \text{if } x == 0 \text{; (False because } x = 2) \][/tex]
Since [tex]\( x \neq 0 \)[/tex], the function returns [tex]\( \text{fun1}(x - 1, x + y) \)[/tex]:
[tex]\[ \text{fun1}(2 - 1, 2 + 14) = \text{fun1}(1, 16) \][/tex]

6. Fifth Iteration: Now, the function is called with [tex]\( x = 1 \)[/tex] and [tex]\( y = 16 \)[/tex]:
[tex]\[ \text{if } x == 0 \text{; (False because } x = 1) \][/tex]
Since [tex]\( x \neq 0 \)[/tex], the function returns [tex]\( \text{fun1}(x - 1, x + y) \)[/tex]:
[tex]\[ \text{fun1}(1 - 1, 1 + 16) = \text{fun1}(0, 17) \][/tex]

7. Final Iteration: Now, the function is called with [tex]\( x = 0 \)[/tex] and [tex]\( y = 17 \)[/tex]:
[tex]\[ \text{if } x == 0 \text{; (True because } x = 0) \][/tex]
Since [tex]\( x == 0 \)[/tex], the function returns [tex]\( y \)[/tex]:
[tex]\[ \text{return } y = 17 \][/tex]

Thus, the function [tex]\( \text{fun1}(5, 2) \)[/tex] returns [tex]\(\boxed{17}\)[/tex].