1.6k views

What is the value printed by the following C program?

#include<stdio.h>

int f(int *a, int n)
{
if (n <= 0) return 0;
else if (*a % 2 == 0) return *a+f(a+1, n-1);
else return *a - f(a+1, n-1);
}

int main()
{
int a[] = (12, 7, 13, 4, 11, 6);
printf("%d", f(a, 6));
return 0;
}
1. $-9$
2. $5$
3. $15$
4. $19$
edited | 1.6k views
0
@kenzou, The program won't compile with parenthesis used in the initializer. Please change it to "{ }"

Suppose $int$ array takes $4$ bytes for each element and stored at base address $100$.

Follow below image. Red color shows the return value.

So, $15$ is the answer.

edited
+6
In C leaglly it is possible to have 2 byte for "int". But there does not make any sense to have an int value which cannot go beyong 31267. So, please assume 4 bytes whenever we use int in C. Using 2 bytes for int is like making fun of C :(
+1
Thanks a lot @arjun sir . I will keep this in my mind in future. I will update this IMG tomorrow.n

Edited @Arjun Sir
It will print
$12 + ( 7 - (13 - (4 + (11 - ( 6 + 0)))))$
$\quad = 12 + (7 - (13 - ( 4 + ( 11 -6)))))$
$\quad= 12 + 7 - 13 + 9$
$\quad= 15$

it is C. 15.

1
2