Em hãy viết hàm đệ quy để tìm kiếm nhị phân giá trị x trong dãy A không giảm có n phần tử

Trả lời Vận dụng trang 34 Chuyên đề Tin học 11 sách Cánh diều hay nhất, chi tiết sẽ giúp học sinh dễ dàng làm bài tập Tin học 11.

1 159 18/07/2023


Giải Chuyên đề Tin học 11 Cánh diều Bài 2: Kĩ thuật đệ quy trong chia để trị

Vận dụng trang 34 Chuyên đề Tin học 11: Em hãy viết hàm đệ quy để tìm kiếm nhị phân giá trị x trong dãy A không giảm có n phần tử A0,A1, ..., An - 1 các phần tử có thể trùng nhau. Nếu tìm thấy thì hàm này trả về chỉ số i nhỏ nhất mà Ai = x. Nếu không tìm thấy thì hàm này trả về -1.

Lời giải:

include
using namespace std;
int tim(int *a,int left,int right,int x)
{
int m;
if(left>right) return 0;
m=(left+right)/2;
if(a[m]==x) return m;
if(x<a[m]) return tim(a,left,m-1,x);
return tim(a,m+1,right,x);
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int x;
cout<<"tim so: ";cin>>x;
if(int z=tim(a,0,9,x)) cout<<"tim thay tai vi tri: "<<z<<"\n";
else cout<<"khong tim thay\n";
}

1 159 18/07/2023


Xem thêm các chương trình khác: