假设我有以下声明:
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
,这是预期的。但是,我真的不明白这个递归函数如何“比较”这些值。 (我的意思是我没有看到任何运算符,例如>
,<
。我看到的唯一运算符是==
)。那么,这个递归函数如何比较数组中的值?
答案 0 :(得分:6)
递归使用std::max
函数,该函数使用operator<
。子数组[a;b]
的最大值是a
与子数组[a + 1;b]
的最大值之间的最大值(如果a
,则为a = b
。)