我是靠谱客的博主 彪壮睫毛,最近开发中收集的这篇文章主要介绍经典算法详解(11)递归查找数组中的最大值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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://www.cnblogs.com/ys99/p/9317129.html

最后

以上就是彪壮睫毛为你收集整理的经典算法详解(11)递归查找数组中的最大值的全部内容,希望文章能够帮你解决经典算法详解(11)递归查找数组中的最大值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部