GATE CS 2021 Set 2 — Question 59
Go beyond PYQs with Success TrackerAI-powered personalised practice and doubt support. Unlimited practice on eligible plans; AI usage limits apply.NAT+2 / -0MediumFunctions & RecursionC ProgrammingProgramming & Data Structures
Programming & Data Structures → C Programming → Functions & Recursion
Last updated
Question
Consider the following ANSI C program.
The output of the program upon execution is _______
#include <stdio.h>
int foo(int x, int y, int q)
{
if ((x <= 0) && (y <= 0))
return q;
if (x <= 0)
return foo(x, y-q, q);
if (y <= 0)
return foo(x-q, y, q);
return foo(x, y-q, q) + foo(x-q, y, q);
}
int main()
{
int r = foo(15, 15, 10);
printf("%d", r);
return 0;
}
The output of the program upon execution is _______
Correct answer
60 to 60
Solution
The function
foo(x, y, q) recursively computes a value. The base case returns q (which is 10) when both x and y are . If only one is , it recurses by reducing the other variable. If both are positive, it branches.Let's trace foo(15, 15, 10):1.
foo(15, 15, 10) calls:-
foo(15, 5, 10) -
foo(5, 15, 10)
foo(15, 5, 10) calls:-
foo(15, -5, 10): Since , callsfoo(5, -5, 10)foo(-5, -5, 10). Returns 10. -
foo(5, 5, 10): Callsfoo(5, -5, 10)(returns 10) +foo(-5, 5, 10)(returns 10). Sum = 20. - Total for this branch: .
foo(5, 15, 10) calls:-
foo(5, 5, 10): As calculated above, returns 20. -
foo(-5, 15, 10): Since , callsfoo(-5, 5, 10)foo(-5, -5, 10). Returns 10. - Total for this branch: .
- .
Continue learning with Success Tracker
A step still unclear? Work through it with support
Use Success Tracker to ask about the reasoning, then try another GATE CS question to check your understanding.
AI-powered practice· Unlimited practice on eligible plans
- PYQs with solutions
- Attempt available previous-year questions, then compare your reasoning with the worked solution. Coverage varies by stream.
- Practice that adapts
- Choose a topic, work on weaker areas and bookmark questions to revisit. Your attempts feed your progress tracking.
- AI doubt support
- Ask follow-up questions about a step or concept while practising, instead of stopping at the final answer.
Unlimited practice is available on eligible plans. Free practice and AI usage have limits; check the current plan allowances before choosing.
This page stays readable without an account. AI responses can be wrong; check them against the solution and source material.
More questions on C Programming
2026 Set 2 Q12The set T represents various traversals over binary tree. The set S represents the order of…2026 Set 2 Q19Consider the following three ANSI-C programs, P1, P2, and P3. P1 [code] P2 [code] **P3**…2026 Set 1 Q23Let be an odd number greater than 100. Consider a binary minheap with elements stored in an…2026 Set 1 Q24Consider a hash table that is initially empty. The hash table is maintained…2026 Set 1 Q27Consider the following C statements: Which of the following options is/are correct? [figure]