The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+15 votes
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$
asked in Algorithms by Veteran (101k points)
edited by | 1.6k views
0
@kenzou, The program won't compile with parenthesis used in the initializer. Please change it to "{ }"

4 Answers

+12 votes
Best answer

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.

answered by Boss (22.8k points)
edited by
+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
+23 votes
It will print
$12 + ( 7 - (13 - (4 + (11 - ( 6 + 0)))))$
$\quad = 12 + (7 - (13 - ( 4 + ( 11 -6)))))$
$\quad= 12 + 7 - 13 + 9$
$\quad= 15$
answered by Boss (18.1k points)
+6 votes

Answer : Option C) 15

answered by Active (1.6k points)
+5 votes
it is C. 15.
answered by Boss (19.7k points)


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

39,848 questions
46,815 answers
141,155 comments
59,068 users