C Recursion MCQ
Q1.What will be the output of the following C code?
#includemain() { 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; }
- 24
- 4
- 12
- 10
Answer:- (A).
Explanations :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.
Explanations :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.
- Arrey
- Linked list
- Binary tree
- Stack
Answer:- (D).
Explanations : The compiler uses the data type stack for implementing normal as well as recursive function calls.
Explanations : The compiler uses the data type stack for implementing normal as well as recursive function calls.
- First in first out
- First in last out
- Last in first out
- Last in last out
Answer:- (C).
Explanations : 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.
Explanations : 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.
- Compile time error
- Run time error
- Run time error
- No error
Answer:- (B).
Explanations : 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.
Explanations : 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.
#includemain() { int n,i; n=f(6); printf("%d",n); } f(int x) { if(x==2) return 2; else { printf("+"); f(x-1); } }
- ++++2
- +++++2
- +++++
- 2
Answer:- (A).
Explanations :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.
Explanations :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.
#includemain() { int a; a=f1(10); printf("%d",a); } f1(int b) { if(b==0) return 0; else { printf("a"); f1(b--); } }
- 9 times
- 10 times
- 0 times
- 0 times/li>
Answer:- (D).
Explanations :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.
Explanations :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.
#includemain() { int n=10; int f(int n); printf("%d",f(n)); } int f(int n) { if(n>0) return(n+f(n-2)); }
- 10
- 80
- 80
- 80
Answer:- (C).
Explanations :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.
Explanations :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.
#includeint main() { printf("Hello"); main(); return 0; }
- Hello is printed once.
- Hello infinite number of times
- Hello infinite number of times
- Hello infinite number of times
Answer:- (B).
Explanations :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.
Explanations :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.
#include#define NL '\n' main() { void f(void); printf("enter the word\n"); f(); } void f(void) { char c; if((c=getchar())!=NL) { f(); printf("%c",c); } return; }
- sanfoundry
- infinite loop
- yrdnuofnasy
- fnasyrdnuo
Answer:- (C).
Explanations :The above code prints the reverse of the word entered. The recursive function terminates when getchar() is equal to null.
Explanations :The above code prints the reverse of the word entered. The recursive function terminates when getchar() is equal to null.
- True
- False
Answer:- (B).
Explanations : Recursion requires more system memory than iteration due to the maintenance of stack.
Explanations : Recursion requires more system memory than iteration due to the maintenance of stack.
Copyright © 2022 Shineskill Software Pvt. Ltd., All rights reserved.