您现在的位置是:首页 > 文章详情

经典算法详解(11)递归查找数组中的最大值

日期:2018-07-15点击:345

题目:编写一个程序,用递归的方法实现查找数组中的最大值。

C++实现

 1 #include<iostream>  2  3 using namespace std;  4 //第一种方法是常规方法,不是使用递归,首先将第一个元素的值赋值给max,然后遍历数组,  5 //当遇到超高max的值时将其赋值给max,最后就将得到最大值  6 int getMax_fir(int *arr,int n) {  7 int max = arr[0];  8 for (int i = 1; i < n; i++) {  9 if (max < arr[i]) 10 max = arr[i]; 11  } 12 return max; 13 } 14 15 //第二种方法是使用递归,递归就是讲大规模问题转成小规模的相同问题,将数组看成第一个元素与后面的数组的最大值作比较, 16 //后面的数组求最大值又可以看成它的第一个元素与后面的数组最大值比大小,以此类推性,形成递归 17 int getMax_sec(int *arr, int n) { 18 if (n == 1) //设置终止条件 19 return arr[0]; 20 int tem = getMax_sec(arr + 1, n - 1); //指针加一表示下一个元素开始 21 if (arr[0] > tem) 22 return arr[0]; 23 else 24 return tem; 25 } 26 27 int main(int argc, char *argv[]) { 28 int arr[10] = { 2,4,5,65,2,8,2,5,6,55 }; 29 cout << getMax_fir(arr, 10) << endl; 30 cout << getMax_sec(arr, 10)<<endl; 31  getchar(); 32 return 0; 33 }

说明:

(1)第一种方法是常规方法,不是使用递归,首先将第一个元素的值赋值给max,然后遍历数组,当遇到超高max的值时将其赋值给max,最后就将得到最大值。

(2)第二种方法是使用递归,递归就是讲大规模问题转成小规模的相同问题,将数组看成第一个元素与后面的数组的最大值作比较,后面的数组求最大值又可以看成它的第一个元素与后面的数组最大值比大小,以此类推性,形成递归。第二种方法符合题目要求。

原文链接:https://yq.aliyun.com/articles/611867
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章