C++中使用递归程序查找数组的最小值和最大值
我们以整数数组Arr[]作为输入。目标是使用递归方法查找数组中的最大和最小元素。
由于我们使用递归,我们将遍历整个数组直到长度为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)接收输入数组及其长度,并使用递归返回数组中的最小值。
获取整数变量minimum。
如果当前索引len为1,则设置minimum=arr[0]并返回minimum。
否则,设置minimum = arr[len] 或 recforMin(arr,len-1) 的最小值,并返回它。
最后将返回最小元素。
在main函数内部打印结果。
查找最小值
查找最大值
将数组Arr[]作为输入。
函数recforMax(int arr[], int len)接收输入数组及其长度,并使用递归返回数组中的最大值。
获取整数变量maximum。
如果当前索引len为1,则设置maximum=arr[0]并返回maximum。
否则,设置maximum = 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 <<"Minimum in the array :"<<recforMin(Arr, length); return 0; }
输出
如果我们运行上面的代码,它将生成以下输出:
Minimum in the array :-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 <<"Maximum in the array :"<<recforMax(Arr, length); return 0; }
输出
如果我们运行上面的代码,它将生成以下输出:
Maximum in the array :-100
广告