如何递归地找到C++中max元素的索引?

Cod*_*117 0 c++ arrays recursion max

获得最大值似乎并不太难:

int getMax(int arr[], int size) {
    if(size == 1) {
        return arr[0]
    }
    return max(arr[size - 1], getMaxIndex(arr, size - 1));
}
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能找到它所在的指数?如果我创建一个count变量,它会在递归调用后立即被擦除.我无法在网上找到任何人只使用数组和大小参数递归执行此操作.谢谢你的帮助.

Jar*_*d42 5

你可以这样做:

int getMaxIndex(int arr[], int size) {
    if (size == 1) {
        return 0;
    }
    const auto recMaxIndex = getMaxIndex(arr, size - 1);
    if (arr[recMaxIndex] < arr[size - 1]) {
        return size - 1;
    } else {
        return recMaxIndex;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @NicholasPipitone它实际上非常聪明,因为现在所有类型都在第一行中定义.如果更改参数/返回类型,`auto`保证忘记更新该行不会发生意外转换. (3认同)