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;
	}
		
}
Gió viết 01:49 ngày 01/10/2018

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).

Bài liên quan
0