Consider the binarySearch() function below:
4 phương ánCó giải thích
int binarySearch(int [] a, int x, int low, int high)
{ int t, k;
if(low > high) return( -1);
k = (low + high) / 2;
if(a[k] == x) return(k);
if(x<a[k]) return(binarySearch(a,x,low,k-1);
else return(binarySearch(a,x,k+1,high);
}Suppose the array a is given by the statement:
int [] a = {2,4,6,8,10,12,14, 16};For the call binarySearch(a,7,2, 5), how many calls to this will be made, including the original call?
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "3". Lời gọi đầu có low bằng 2, high bằng 5 nên k bằng 3 và phần tử ở chỉ số 3 là 8; vì 7 nhỏ hơn 8 nên gọi tiếp với đoạn từ 2 tới 2. Lời gọi thứ hai có k bằng 2 và phần tử ở chỉ số 2 là 6; vì 7 lớn hơn 6 nên gọi tiếp với low bằng 3, high bằng 2. Lời gọi thứ ba thấy low lớn hơn high nên trả về -1 ngay, không gọi thêm. Vậy có ba lần vào hàm, kể cả lời gọi ban đầu. Số "2" bỏ quên chính lời gọi phát hiện đoạn rỗng, nhưng lần vào hàm ấy có thật và nó mới là chỗ kết luận không tìm thấy 7. Số "4" đòi thêm một tầng nữa sau khi đoạn đã rỗng, mà hàm trả về -1 chứ không gọi tiếp. Số "5" ứng với việc dò trên cả 8 phần tử của mảng, trong khi lời gọi ban đầu đã giới hạn vùng tìm từ chỉ số 2 tới 5, chỉ gồm bốn phần tử.
Cùng phần 3
Consider the following function:
void fun(int n)
{if(n > 0)
{System.out.print(" " + n );
fun(n-2);
}
}
What is the output when the statement fun(9); is run?Có lời giảiCâu hỏiConsider the following function:
void fun(int n)
{int m = n/2;
int k = n%2;
if (m > 0)
{fun(m);
}
System.out.print(k + " ");
}
What is the output when the statement fun(11); is run?Có lời giảiCâu hỏiConsider the following function:
int fun(int n)
{if (n < 0)
return(fun(-n));
else if(n<5)
return(2);
else
return(n*fun(n/2));
}
What is the value of fun(-3)?Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây