wait 发表于 2015-12-30 20:35:55

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

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

using namespace std;

int getMax(int a[], int n)
{
    if(n == 1)
      return a;
    else
      return max(a, getMax(a+1,n-1));
}
int main()
{
    int num = {0,3,6,2,8,10,4};
    cout<<getMax(num,10)<<endl;
    return 0;
}


页: [1]
查看完整版本: 用递归方法找出数组中的最大元素