C Questions and Answers – Recursion

This set of C Multiple Choice Questions & Answers (MCQs) focuses on “Recursion”.

Pre-requisite for this C MCQ set: Advanced C Programming Video Tutorial.

1. What will be the output of the following C code?

#include<stdio.h>
main()
{
    int n;
    n=f1(4);
    printf("%d",n);
}
f1(int x)
{
    int b;
    if(x==1)
        return 1;
    else
        b=x*f1(x-1);
        return b;
}

a) 24
b) 4
c) 12
d) 10
View Answer

Answer: a
Explanation: The above code returns the factorial of a given number using the method of recursion. The given number is 4 in the above code, hence the factorial of 4, that is, 24 will be returned.
advertisement
advertisement

2. The data structure used to implement recursive function calls _____________
a) Array
b) Linked list
c) Binary tree
d) Stack
View Answer

Answer: d
Explanation: The compiler uses the data type stack for implementing normal as well as recursive function calls.

3. The principle of stack is __________
a) First in first out
b) First in last out
c) Last in first out
d) Last in last out
View Answer

Answer: c
Explanation: A stack is a last in first out(LIFO) data type. This means that the last item to get stored in the stack is the first item to get out of it.

4. In the absence of a exit condition in a recursive function, the following error is given __________
a) Compile time error
b) Run time error
c) Logical error
d) No error
View Answer

Answer: b
Explanation: When a recursive function is called in the absence of an exit condition, it results in an infinite loop due to which the stack keeps getting filled(stack overflow). This results in a run time error.
advertisement

5. What will be the output of the following C code?

#include<stdio.h>
main()
{
    int n,i;
    n=f(6);
    printf("%d",n);
}
f(int x)
{
    if(x==2)
            return 2;
    else
    {
        printf("+");
        f(x-1);
    }
}

a) ++++2
b) +++++2
c) +++++
d) 2
View Answer

Answer: a
Explanation:
When x=6: ‘+’ is printed.
When x=5: ‘+’ is printed.
When x=4: ‘+’ is printed.
When x=3: ‘+’ is printed.
When x=2: 2 is printed.
Hence the output is: ++++2.
advertisement

6. How many times is ‘a’ printed when the following C code is executed?

#include<stdio.h>
main()
{
    int a;
    a=f1(10);
    printf("%d",a);
}
f1(int b)
{
    if(b==0)
        return 0;
    else
    {
        printf("a");
        f1(b--);
    }
}

a) 9 times
b) 10 times
c) 0 times
d) Infinite number of times
View Answer

Answer: d
Explanation: Although we have specified the exit condition, the code above results in an infinite loop because we have used b- -(decrement operator) to call the recursive function. Due to this, the loop goes on infinitely. However, if we had used f1(b-1) instead, the answer would have been 10 times.

7. What will be the output of the following C code?

#include<stdio.h>
int main()
{
    int n=10;
    int f(int n);
    printf("%d",f(n));
}
int f(int n)
{
    if(n>0)
        return(n+f(n-2));
}

a) 10
b) 80
c) 30
d) Error
View Answer

Answer: c
Explanation: The recursive function returns n+f(n-2) till 10>0.
Therefore, the above code will be evaluated as: 10+8+6+4+2, which is equal to 30.

8. What will be the output of the following C code?

#include<stdio.h>
int main()
{
    printf("Hello");
    main();
    return 0;
}

a) Hello is printed once
b) Hello infinite number of times
c) Hello is not printed at all
d) 0 is returned
View Answer

Answer: b
Explanation: in the above code, we are calling main() from main(), which is recursion. However, we have not defined any condition for the program to exit. Hence, “hello” will be printed infinite number of times. To prevent this, we need to define a proper exit condition in the recursive function.

9. What will be the output of the following C code if the input given to the code shown below is “sanfoundry”?

#include<stdio.h>
#include<stdio.h>
#define NL '\n'
void main()
{
    void f(void);
    printf("enter the word\n");
    f();
}
void f(void)
{
    char c;
    if((c=getchar())!=NL)
    {
        f();
        printf("%c",c);
    }
    return;
}

a) sanfoundry
b) infinite loop
c) yrdnuofnas
d) fnasyrdnuo
View Answer

Answer: c
Explanation: The above code prints the reverse of the word entered. The recursive function terminates when getchar() is equal to newline character.

10. Iteration requires more system memory than recursion.
a) True
b) False
View Answer

Answer: b
Explanation: Recursion requires more system memory than iteration due to the maintenance of stack.

Sanfoundry Global Education & Learning Series – C Programming Language.

To practice all areas of C language, here is complete set of 1000+ Multiple Choice Questions and Answers.

If you find a mistake in question / option / answer, kindly take a screenshot and email to [email protected]

advertisement
advertisement
Subscribe to our Newsletters (Subject-wise). Participate in the Sanfoundry Certification contest to get free Certificate of Merit. Join our social networks below and stay updated with latest contests, videos, internships and jobs!

Youtube | Telegram | LinkedIn | Instagram | Facebook | Twitter | Pinterest
Manish Bhojasia - Founder & CTO at Sanfoundry
Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Subscribe to his free Masterclasses at Youtube & discussions at Telegram SanfoundryClasses.