请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

猿媛之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 6156|回复: 0

用递归方法找出数组中的最大元素

[复制链接]

44

主题

48

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2015-12-30 20:35:55 | 显示全部楼层 |阅读模式
   如果不要求用递归求解,那么这道题目就非常简单,可以标记最大值为数组第一个元素,然后从第二个元素开始遍历,如果遍历到的元素的值大于最大值,则更新最大值为当前遍历的元素。既然题目要求用递归求解,递归算法最重要的两个因素为:递归公式以及递归结束条件。对于本题而言,递推公式为:对于有n个元素的数组arr,它的最大值为max(数组第一个元素,其余n-1个元素的最大值),对于子数组可以采用同样的递推公式。递归的结束条件为:当遍历的子数组只剩下一个元素。由此可以写出实现代码如下:
  1. #include <cmath>
  2. #include<iostream>

  3. using namespace std;

  4. int getMax(int a[], int n)
  5. {
  6.     if(n == 1)
  7.         return a[0];
  8.     else
  9.         return max(a[0], getMax(a+1,n-1));
  10. }
  11. int main()
  12. {
  13.     int num[10] = {0,3,6,2,8,10,4};
  14.     cout<<getMax(num,10)<<endl;
  15.     return 0;
  16. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|猿媛之家    

GMT+8, 2021-10-25 09:52 , Processed in 0.189882 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表