Consider the C function given below.
int f(int j) { static int i = 50; int k; if (i == j) { printf("something"); k = f(i); return 0; } else return 0; }
Which one of the following is TRUE?
There is no updation for $i$ and $j$ in the function. so if we call function with $j = 50$ the recursive call will be continued infinitely. There is no terminating condition for recursion. hence answer D
@rajatmyname because option a is strictly talking about all value of j but for 50 it will trapped in a loop
I have a small doubt.
In option D, it is clearly given that :
The function will exhaust the runtime stack or run into an infinite loop when j=50.
Consider only the underlined part. How at j=50, program will run into an infinite loop?
1. int f(int j) { 2. static int i = 50; 3. int k; 4. if (i == j) { 5. printf("something"); 6. k = f(i); key line function loop from 6 to 1 always when j=50 even not return 0. so 1st and 3rd statement are false. return 0; } else return 0; }
since for value other then 50 it will not print anythng b/c not satisfy if property.
so ans is D. since always same value pass as value.
Option D