The GATE Grind

GATE 2025 CS (CS1) – Question 61

Programming and Data Structures · Recursion · 2 marks · Numerical answer

#include <stdio.h>
int foo(int S[],int size){
    if(size == 0) return 0;
    if(size == 1) return 1;
    if(S[0] != S[1]) return 1+foo(S+1,size-1);
    return foo(S+1,size-1);
}
int main(){
    int A[]={0,1,2,2,2,0,0,1,1};
    printf("%d",foo(A,9));
    return 0;
}

The value printed by the given C program is _______ . (Answer in integer)

Practise this question in The GATE Grind →

Show answer and explanation

Correct answer: 5

Explanation

foo counts adjacent unequal pairs and adds 1 for the base case. In 0,1,2,2,2,0,0,1,1 the unequal adjacent pairs are 0-1, 1-2, 2-0 and 0-1 (4 in all), so the result is 4+1 = 5.