Em đang học cách viết chương trình đệ quy(trước đây tụi em có học qua rồi nhưng dùng vòng for) với đề bài:
Viết chương trình tìm vị trí đầu tiên của phần tử x trong mảng 1 chiều a(với x nhập vào từ bàn phím).
Đây là code của em mọi người xem có thể rút gọn hay có điểm gì thừa hay thiếu không xin chỉ bảo để em rút kinh nghiệm ạ:
# include < iostream>
# include < conio.h>
using namespace std;
int TimXDauTienNP(int a[], int x, int SoPhanTu,int ViTri);
int main()
{
int x, i = 0;
int a[5] = { 1, 2, 3, 2, 4 };
cout << "\nX= ";
cin >> x;
//Xuat mang
for (i; i < 5; i++)
cout << a[i] << "\t";
int kq=TimXDauTienNP(a, x, 5,0);
if (kq == -1)
cout << "\nKhong co phan tu nay trong mang\n";
else
cout << "\nVi tri phan tu " << x << " trong mang la: " << kq<<endl;
int kq2 = TimXDauTienNP(a, x, 5, 4);
_getch();
return 1;
}
int TimXDauTienNP(int a[], int x, int SoPhanTu, int Vitri)
{
if (SoPhanTu < 0)
return -1;
if (x != a[Vitri])
{
return TimXDauTienNP(a, x, SoPhanTu - 1,Vitri+1);
}
else
{
return Vitri;
}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?