在 C++ 中查找数组的最小和最大元素的递归程序

我们得到一个整数数组 Arr[] 作为输入。目标是使用递归方法在数组中找到最大和最小元素。

由于我们使用递归,我们将遍历整个数组,直到达到 length=1,然后返回 A[0],这构成了基本情况。否则将当前元素与当前的最小值或最大值进行比较,并通过递归为后面的元素更新其值。

让我们看看这个的各种输入输出场景 -

输入 - Arr= {12,67,99,76,32};

输出 - 数组中的最大值:99

说明 - 在所有元素中,其中 99 是最大的。

输入 - Arr= {1,0,-99,9,3};

输出 - 数组中的最小值:-99

说明- 在所有元素中 -99 是其中的最小值。

下面程序中使用的方法如下

寻找最小值

  • 以数组 Arr[] 作为输入。

  • 函数 recforMin(int arr[], int len) 接受输入数组及其长度,并使用递归返回数组中的最小值。

  • 取整数变量最小值

  • 如果当前索引 len 为 1,则设置 minimum=arr[0] 并返回 minimum。

  • 否则设置最小值 = arr[len] 或 recforMin(arr,len-1) 的最小值并返回它。

  • 最后将返回最小元素。

  • 打印在 main 中获得的结果。

寻找最小值

  • 寻找最大值

  • 以数组 Arr[] 作为输入。

  • 函数 recforMax(int arr[], int len) 接受输入数组及其长度,并使用递归返回数组中的最大值。

  • 取整数变量最大值。

  • 如果当前索引 len 为 1,则设置 maximum=arr[0] 并返回最大值。

  • 否则设置 arr[len] 或 recforMax(arr,len-1) 的最小值 = 最大值并返回它。

  • 最后将返回最大元素。

  • 打印在 main 中获得的结果。

使用递归求最小值

示例

#include <iostream>
using namespace std;
int recforMin(int arr[], int len){
   int minimum;
   if (len == 1){
      minimum=arr[0];
      return minimum;
   }
   else{
      return minimum=arr[len]<recforMin(arr,len-1)?arr[len]:recforMin(arr,len-1);
   }
}
int main(){
   int Arr[] = {-89,98,76,32,21,35,100};
   int length = sizeof(Arr)/sizeof(Arr[0]);
   cout <<"数组中的最小值:"<<recforMin(Arr, length);
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出

数组中的最小值:-89

使用递归求最小值

示例

#include <iostream>
using namespace std;
int recforMax(int arr[], int len){
   int maximum;

   if (len == 1){
      maximum=arr[0];
      return maximum;
   }
   else{
      return maximum=arr[len]>recforMax(arr,len-1)?arr[len]:recforMax(arr,len-1);
   }
}
int main(){
   int Arr[] = {-89,98,76,32,21,35,100};
   int length = sizeof(Arr)/sizeof(Arr[0]);
   cout <<"数组中的最大值:"<<recforMax(Arr, length);
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出

数组中的最大值:-100