Я все еще очень плохо знаком с рекурсивом и хочу вернуть 3 из этого массива int arr[size] = {21, -6, 3, 5, 5, -3, 6, -21}
за то же самое абсолютное значение с рекурсивной реализацией.
Однако я получаю значение 0. Я не могу точно определить, что делает эту программу не приносящей желаемого значения.
#include <iostream>
using namespace std;
int additive_inverse_opposite_pairs_count(int* arr, int n) {
int size = n;
if (n == 0) {
if (arr[n] == -1 * arr[size - 1 - n])
return 1;
else
return 0;
} else {
int count = additive_inverse_opposite_pairs_count(arr, n - 1) + count;
if (arr[n] == -1 * arr[size - 1 - n]) {
count += 1;
} else
count = 0;
return count;
}
}
int main() {
int size = 8;
int arr[size] = {21, -6, 3, 5, 5, -3, 6, -21};
int value = 0;
value = additive_inverse_opposite_pairs_count(arr, size);
cout << "value: " << value << endl;
return 0;
}