使用递归在数组中查找最大值

时间:2016-10-17 20:48:01

标签: c++ recursion

假设我有以下声明:

int arr[5] = {1,10,9,28,3};
int low = 0;
int high = 4; 
int largest = findLargest(ar, low, high);

我想用递归写一个“findLargest”函数,这就是我得到的

 int findLargest(int arr[], int low, int high)
 {      
    if (low == high)
        return arr[low];
    return max(arr[low], findLargest(arr, low+1, high));
 }

输出为28,这是预期的。但是,我真的不明白这个递归函数如何“比较”这些值。 (我的意思是我没有看到任何运算符,例如><。我看到的唯一运算符是==)。那么,这个递归函数如何比较数组中的值?

1 个答案:

答案 0 :(得分:6)

递归使用std::max函数,该函数使用operator<。子数组[a;b]的最大值是a与子数组[a + 1;b]的最大值之间的最大值(如果a,则为a = b。)