Home » Programming & Data Structure » Programming and data structure miscellaneous » Question

Programming and data structure miscellaneous

Programming & Data Structure

  1. 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};
        print f (“%d, f(a, 6));
    return 0,
    }
    1. – 9
    2. 5
    3. 15
    4. 19
Correct Option: C

f() is a recursive function which adds f(a + 1, n – 1) to *a if *a is even. If *a is odd then f() subtracts f(a + 1, n – 1) from *a. See below recursion tree for execution of f(a, 6).
f(add(12), 6) /*Since 12 is first element. a contains
address of 12 */
|
|
12 + f(add(7), 5) /* Since 7 is the next element, a+1 contains address of 7 */
|
|
7 – f(add(13), 4)
|
|
13 – f(add(4), 3)
|
|
4 + f(add(11), 2)
    |
   |
  11 – f(add(6), 1)
    |
    |
  6 + 0
So, the final returned value is
12 + (7 – (13 – (4 + (11 – (6 + 0))))) = 15



Your comments will be displayed only after manual approval.