Consider the following ANSI-C function.
int func(int start, int end){
int length=end+1-start;
if((length<1)||(start<0)||(end<0)){ return(0); }
if(length%3==0){
return(func(start+1, end));
} else if(length%3==1){
return(1+func(start, end-1));
} else {
return(func(start+2, end));
}
}
The maximum possible value that can be returned from this function is
____________. (answer in integer)
Note: Ignore syntax errors (if any) in the function.
We need the maximum value the recursive function func(start, end) can ever return.
Step 1: Reduce the problem to a single variable. Let \(n = end + 1 - start\) be the length of the range. The function returns 0 immediately whenever \(n\) is less than 1, or start or end is negative. Otherwise it does exactly one of three things, based on \(n \bmod 3\):
- If \(n \bmod 3 = 0\): it calls \(func(start+1, end)\), which has new length \(n-1\), and the returned value is passed through unchanged.
- If \(n \bmod 3 = 1\): it calls \(1 + func(start, end-1)\), which has new length \(n-1\), and 1 is added to whatever that call returns.
- If \(n \bmod 3 = 2\): it calls \(func(start+2, end)\), which has new length \(n-2\), and the returned value is passed through unchanged.
Because start and end can always be chosen large enough (for example \(start = 0\), \(end = n-1\)) so that the negative-index check never fires before \(n\) itself drops below 1, the returned value depends only on \(n\). Call this value \(f(n)\).
Step 2: Compute f(n) for small values.
\(f(0) = 0\)
\(f(1) = 1 + f(0) = 1\) (since \(1 \bmod 3 = 1\))
\(f(2) = f(0) = 0\) (since \(2 \bmod 3 = 2\))
\(f(3) = f(2) = 0\) (since \(3 \bmod 3 = 0\))
\(f(4) = 1 + f(3) = 1\) (since \(4 \bmod 3 = 1\))
\(f(5) = f(3) = 0\)
\(f(6) = f(5) = 0\)
\(f(7) = 1 + f(6) = 1\)
Step 3: Prove the pattern never exceeds 1. Whenever \(n\) is a multiple of 3, the chain of reductions that follows only ever visits lengths congruent to 0 or 2 modulo 3 (it goes \(3k \to 3k-1 \to 3k-3 \to 3k-4 \to \ldots \to 0\)), so it never again lands on a length congruent to 1 modulo 3. This means the plus-one branch can fire at most once in the entire recursion, only at the very first call if the original length is congruent to 1 modulo 3. Every subsequent step, once the length becomes a multiple of 3, contributes nothing further.
Step 4: Conclusion. Therefore \(f(n)\) can only ever be 0 or 1, no matter how large \(n\) is or what start and end are chosen. Taking \(start = 0, end = 0\) gives \(n = 1\), and \(func(0,0) = 1 + func(0,-1) = 1 + 0 = 1\), which attains this maximum.
Hence, the maximum possible value that can be returned from this function is:
\[\boxed{1}\]A schedule of three database transactions \(T_1\), \(T_2\), and \(T_3\) is shown. \(R_i(A)\) and \(W_i(A)\) denote read and write of data item A by transaction \(T_i\), \(i = 1, 2, 3\). The transaction \(T_1\) aborts at the end. Which other transaction(s) will be required to be rolled back?

In C runtime environment, which one of the following is stored in heap?
Consider the following three ANSI-C programs, P1, P2, and P3.
P1
P2
P3
#include <stdio.h>
int a=5;
int main(){
int a=7;
return(0);
}
#include <stdio.h>
int main(){
int a=5;
int a=7;
return(0);
}
#include <stdio.h>
int main(){
int a=5;
float a=7;
return(0);
}
Which one of the following statements is true?
Consider the following C statements:
char *str1 = "Hello; /* Statement S1 */
char *str2 = "Hello;"; /* Statement S2 */
int *str3 = "Hello"; /* Statement S3 */
Which of the following options is/are correct?
Consider the following program in C:
#include <stdio.h>
void func(int i, int j) {
if(i < j) {
int i = 0;
while (i < 10) {
j += 2;
i++;
}
}
printf("%d", i);
}
int main() {
int i = 9, j = 10;
func(i, j);
return 0;
}
The output of the program is _________. (answer in integer)
Note: Assume that the program compiles and runs successfully.
Consider the following ANSI-C program.
#include <stdio.h>
int main(){
int *ptr, a, b, c;
a=5; b=11; c=20;
ptr=&a; *ptr=c; ptr=&c;
a=*(&b); c=*ptr-a;
printf("%d",c);
return(0);
}
The output of this program is ____________. (answer in integer)
Note: Assume that the program compiles and runs successfully.