转换为递归函数



描述一个决定变量数量的递归函数非零数组中的符号。我在一个非递归的例子中做过,但是我需要在一个递归的例子中做。

int recur_change_sign(int* arr, int n) {
int count = 0;
for (int i = 0; i < n - 1; i++) {
if ((arr[i] < 0 && arr[i + 1] >= 0) || (arr[i] >= 0 && arr[i + 1] < 0)) {
count++;
}
}
return count;
}

您可以很容易地实现它,像这样:

int recur_change_sign(int* arr, int n) {
if (n <= 1) return 0;
return ((arr[0] < 0 && arr[1] >= 0) || (arr[0] >= 0 && arr[1] < 0)) + recur_change_sign(arr + 1, n - 1);
}

也可以通过将其从尾部移除来实现。

int recur_change_sign(int* arr, int n) {
if (n <= 1) return 0;
return ((arr[n-2] < 0 && arr[n-1] >= 0) || (arr[n-2] >= 0 && arr[n-1] < 0)) + recur_change_sign(arr, n - 1);
}

最新更新