使用递归的数组的最小值。这是如何运作的?

Posted

技术标签:

【中文标题】使用递归的数组的最小值。这是如何运作的?【英文标题】:Minimum of an array using recursion. How does this work? 【发布时间】:2019-04-07 17:32:14 【问题描述】:

请有人解释一下下面的代码是如何工作的?

int minElement(int arr[], int n) 
    if(n == 1)
        return arr[0];
    else 
        int m = minElement(arr, n-1);

        if(m < arr[n-1])
            return m;
        else
            return arr[n-1];
    

【问题讨论】:

【参考方案1】:

我评论了每一行

int minElement(int arr[], int n) 
   if(n == 1)  //When you reach the beginning of the array
        return arr[0]; // Return the first element
    else 
        int m = minElement(arr, n-1); // See what the minimum spot is below n-1 index

        if(m < arr[n-1]) // If the min element is below you return the min element
            return m;
        else
            return arr[n-1]; // If not return your value as the min element up until the index
     // Repeat till you reach the top again

希望对你有帮助

【讨论】:

以上是关于使用递归的数组的最小值。这是如何运作的?的主要内容,如果未能解决你的问题,请参考以下文章

在Java中的整数数组列表中找到最小值的递归函数

使用递归的最小数组值不正确

如何使用数组来查找 C 中的最小值(可能还有最大值?)? [复制]

使用递归函数找到最小值

如何获取数组的最小值,最大值? [复制]

C语言-递归法寻找数组中最小值