Lỗi bài tính tổng các phần tử chẵn có trong mảng bằng đệ quy

Chào mọi người em đang học làm mấy bài đệ quy nên cũng không rành mình sai chỗ nào nữa. Mong mọi người chỉ em lỗi sai chỗ nào! Cảm ơn mọi ngươi nhiều!
Đề: Tính tổng các phần tử chẵn trong mảng bằng đệ quy

Đây là đoạn code của em:

int sumEven(int a[], int n)
{
	if (n == 0)
	{
		if (a[n] % 2 == 0) return a[n];
		else return 0;
	}
	if (a[n - 1] % 2 == 0) return a[n - 1] + sumEven(a, n - 1);
	else return 0 + sumEven(a, n - 1);
}

Khi em nhập phần tử đầu tiên trong mảng sẽ là một số lẻ, nhưng khi nhập phần tiên trong mảng là số chẵn thì lại không đúng
VD:
Phần tử trong mảng là: 2,3,4,1,
Thì đáp án ra là 8

Điều kiện dừng phải là khi n bằng 1 chứ không phải n bằng 0.

Ra 8 là do đã cộng 2 khi n bằng 1 rồi lại cộng 2 lần nữa khi n bằng 0.

6 Likes

Cảm ơn bạn mình đã sữa được rồi !!!

Vì n có thể bằng 0 luôn nên điều kiện dừng phải là n <= 0 :smiley: và chỉ cần return 0.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?