zoukankan      html  css  js  c++  java
  • 经典算法详解(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)第二种方法是使用递归,递归就是讲大规模问题转成小规模的相同问题,将数组看成第一个元素与后面的数组的最大值作比较,后面的数组求最大值又可以看成它的第一个元素与后面的数组最大值比大小,以此类推性,形成递归。第二种方法符合题目要求。

  • 相关阅读:
    增强for循环赋值并且向list集合里添加元素,每个元素都一样
    《《《Spring 视频学习笔记
    xml中的<where><if>模糊查询
    《《《layui入门笔记
    《《《Vue element学习笔记
    《《《Spring Boot视频学习笔记
    intellij idea设置打开多个文件显示在多行tab上
    postMan安装完成,打开提示找不到,或者报错 可能原因
    Intellij IDEA debug模式下项目启动慢/无法启动的事件解决过程记录
    idea代码注释
  • 原文地址:https://www.cnblogs.com/ys99/p/9317129.html
Copyright © 2011-2022 走看看