>

낮은 정수와 높은 정수 사이의 배열에서 최대 수를 찾는 재귀 함수를 만들려고합니다.

배열에서 최대 요소를 재귀 적으로 찾는 데 도움이되는이 기능을 시도했습니다. 2와 2 사이의 최대 값을 찾기 위해 낮은 정수와 높은 정수를 사용하는 함수에 추가하는 방법에 문제가 있습니다.

int findMaxRec(int A[], int n) 
{ 
    // if n = 0 means whole array has been traversed 
    if (n == 1) 
        return A[0]; 
    return max(A[n-1], findMaxRec(A, n-1)); 
}

목표는 다음과 같은 기능을 갖는 것입니다 :

int findMaxBetwen(int A[], int low, int high){
      //Here is where I need help integrating if lets say the array is A[] = 5,6,7,8
      // Call findMaxBetwen(A[], 5, 8) and the output gives 7 because that is the max between the 3 
      //integers.
}


  • 답변 # 1

    업데이트 :C ++ 17은 이제 배열의 크기를 반환 할 수있는 std :: size 함수를 정의합니다.

    #include <iostream>
    #include <iterator>
    using namespace std;
    int findMaxRec(const int[] A, const int &n)
    {
      if (n <= 0) throw "error: array is empty...";
      if (n == 1) return A[0];
      return std::max(A[n - 1], findMaxRec(A, (n - 1)));
    }
    int findMaxRec(const int[] A)
    {
      return findMaxRec(A, std::size(A));
    }
    const int& findMaxRec(const int &i)
    {
      return i;
    }
    
    

    C ++ 17이 없다면,리스트 사용을 고려 하시겠습니까?

    #include <algorithm>
    #include <list>
    int findMaxRec(const std::list<int> &L)
    {
      if (L.size() == 0) throw "error: list is empty...";
      return (*std::max_element(L.begin(), L.end()));
    }
    
    

    findMaxBetwen  함수 템플릿으로 구현할 수 있습니다 :

    template<typename T> int findMaxBetwen(const T &data, int low, int high)
    {
      int i = findMaxRec(data);
      if (i <= low) return low;
      if (i >= high) return high;
      return i;
    }
    //....
    int main(int argc, char** argv)
    {
      std::list<int> a = {5, 6, 7, 8, 10};
      cout << findMaxBetween(a, 5, 8) << '\n'; // output is 8
      int b[5] = {5, 6, 7, 8, 10};
      cout << findMaxBetween(b, 5, 8) << '\n'; // output is 8
      int c = 7;
      cout << findMaxBetween(c, 5, 8) << '\n'; // output is 7
    }
    
    

    cppreference의 함수 템플릿에 대해 자세히 알아보십시오

관련 자료

  • 이전 homebrew - MacOS에서 Python을 36에서 37로 업데이트 할 수 없습니다
  • 다음 kotlin - 내부에서 sharedPreferences를 사용하여 최상위 함수를 정의하는 방법은 무엇입니까?