Skip to content
GATEiit

GATE CSE 2025 Session 1 Q61: Recursive count of runs in an array

Question

Consider the following C program:

#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)

Try it: numerical answer: type the value

Numerical answer. No negative marking.
Show answer and explanation

Answer: 5 (official GATE 2025 final answer key)

Concept used: The recursion adds 1 at each change between neighbours plus 1 at the end, i.e. it counts maximal runs of equal values.

First step: Split A into runs of equal adjacent values: 0 | 1 | 2 2 2 | 0 0 | 1 1.

Full step-by-step solution

Detailed working, common mistakes and linked mock tests will be available with a free GATEiit account. Log-in is coming soon.

Share this question

WhatsAppDownload image

Source: official GATE 2025 Session 1 CS question paper and final answer key, organised by IIT Roorkee. Question paper · Answer key