c++ 转换为递归函数

muk1a3rh  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(109)

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

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;
}
ljsrvy3e

ljsrvy3e1#

您可以像这样非常容易地实现它:

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);
}
nmpmafwu

nmpmafwu2#

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

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);
}

相关问题