再帰

2016-10-17 17 views
0

を使用して、配列内の最大を見つけることは、私は次の宣言があるとします。再帰

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であり、これは予想されたものです。しかし、私はこの再帰関数がどのように値を "比較"するのか、実際には分かりません。 (つまり、><などの演算子は表示されません。表示される唯一の演算子は==です)。だから、この再帰関数はどのように配列の値を比較しますか?

+2

'std :: max'が比較を行います。 – tkausl

+0

要素が1つしかない配列でこの関数を呼び出すとどうなるかを考えてみましょう。シンプル、そう?次に、2つの要素を持つ配列で呼び出すとどうなるか考えてみましょう。その後、3つ、4つなど –

答えて

6

再帰は、operator<を使用するstd::max関数を使用しています。サブアレイ[a;b]の最大値は、aとサブアレイ[a + 1;b]の最大値(aの場合はa = b)です。

+0

入手しました。ありがとう。 – CowEatsGrass

+0

あなたは大歓迎です:) – Bim