电子科技大学推免复考题:利用递归方法找出一个数组中的最大值和最小值
电子科技大学推免复试题:利用递归方法找出一个数组中的最大值和最小值
/**************************** 编写一个函数,使之能完成以下功能: 利用递归方法找出一个数组中的最大值和最小值,要求递归调用函数的格式如下: MinMaxValue(arr,n,&max,&min),其中arr是给定的数组,n是数组元素的个数,max、min分别是最大值和最小值。 ****************************/ #include<stdio.h> #include<time.h> #include<cstdlib> #include<iostream> using namespace std; //产生随机数组 void Random(int a[],int n) { int i=0; srand( (unsigned)time( NULL ) ); while(i<n) { a[i++]=rand()/100; } } //print the array void print(int a[], int len) { int i; for (i = 0; i < len; i++) cout<<a[i]<<" "; cout<<endl; } void MinMaxValue(int arr[],int n,int *max,int *min) { if(n>0) { if(*max<arr[n-1]) *max=arr[n-1]; if(*min>arr[n-1]) *min=arr[n-1]; MinMaxValue(arr,n-1,max,min); } else return ; } int main() { int a[10]={0}; int max=0,min=65535; print(a,10); Random(a,10); print(a,10); MinMaxValue(a,10,&max,&min); cout<<max<<'\n'<<min<<'\n'; } /************** 0 0 0 0 0 0 0 0 0 0 180 208 103 278 299 37 220 6 301 270 301 6 Process returned 0 (0x0) execution time : 1.492 s Press any key to continue. ***************/