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

153

Với giải Vận dụng trang 34 Chuyên đề Tin học 11 Cánh diều chi tiết trong Bài 2: Kĩ thuật đệ quy trong chia để trị  giúp học sinh dễ dàng xem và so sánh lời giải, từ đó biết cách làm bài tập Chuyên đề Tin học 11. Mời các bạn đón xem: 

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

Vận dụng trang 34 Chuyên đề Tin học 11Em 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";
}

Đánh giá

0

0 đánh giá