簡體   English   中英

使用遞歸查找數組 C++ 的最大值和最小值而不更改函數

[英]find max and min of array c++ using recursion without changing function

我需要幫助嘗試在 C++ 中遞歸地查找數組中的最小值和最大值。 功能是給定的,不能改變。

我對兩者都進行了嘗試,但由於某種原因沒有任何反應,代碼沒有進入循環,我想知道我做錯了什么。 這是我的 main 和 min 和 max 函數。

int main()
{
    int array[] = { 46, 22, 7, 58, 91, 55, 31, 84, 12, 78 };

    if (findMax(array, 10) == 91)
    {
        cout << "findMax is correct!" << endl;
    }

    if (findMin(array, 10) == 7)
    {
        cout << "findMin is correct!" << endl;
    }

    int findMax(int array[], int size)
    {
        int i = (size - 1);
        int max = 0;
        if (array[0] < array[i]) {
            max = array[i];
            findMax(array, size - 1);
        }
        return max;
        return 0;
    }

    int findMin(int array[], int size)
    {
        int i = 0;
        int j = size - 1;
        if (i == j) 
        {
            return array[i];
            i++;
        }

        int temp = findMin(array, size);

        if (array[i] < temp) 
        {
            return array[i];
        }

        else 
        {
            return temp;
        }
    }
}

好吧,您只需向后返回,返回每對元素的最小值,然后下一級使數組大小變小。 例子:

int findMin(int array[], int n) 
{ 
    // if size = 0 means whole array has been traversed 
    if (n == 1){
        return array[0]; 
    }
    return min(array[n-1], findMin(array, n-1)); 
} 

您可以使用相同的方法執行findMax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM