30/09/2018, 23:36
Xin hỏi về bài tập đệ quy
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 << "
X= ";
cin >> x;
//Xuat mang
for (i; i < 5; i++)
cout << a[i] << " ";
int kq=TimXDauTienNP(a, x, 5,0);
if (kq == -1)
cout << "
Khong co phan tu nay trong mang
";
else
cout << "
Vi 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;
}
}
Bài liên quan
Code của bạn vẫn tìm khi sophantu=0. Nếu arr[n]=x thì nó sẽ trả về địa chỉ = n (là kết quả sai).