首页 > 其他 > 详细

递归求解最大值和最小值

时间:2019-11-19 09:46:14      阅读:122      评论:0      收藏:0      [点我收藏+]

递归求解最大值和最小值

思路

这里使用递归实际是把大问题转化为小问题,寻找最大值和最小值都可以看作数组的最后一个位置的元素和剩下的所有元素的最值进行比较,由此可以转化为递归问题。

代码实现

#include<bits/stdc++.h>
using namespace std;
const int maxn=100;
int search_max(int a[], int n)
{
    if(n==1)
        return a[0];
    else 
    {
        int tmp=search_max(a, n-1);
        return a[n-1] > tmp ? a[n-1]:tmp; 
    }
}
int search_min(int a[], int n)
{
    if(n==1)
        return a[0];
    else 
    {
        int tmp=search_min(a, n-1);
        return a[n-1] < tmp ? a[n-1]:tmp; 
    }
}
/*
    产生n个[min, max]的随机数。可能会有重复值。
*/
void initRandomize(int *arr, int n, int min, int max)
{
    int i = 0;
    srand(time(0));             /*设置种子,并生成伪随机序列*/
    for (i = 0; i < n; ++i) {
        arr[i] = rand() % (max - min + 1) + min;  /*得到从[min, max]之间的随机数*/
        printf("%d ", arr[i]);
    }
    printf("\n\n");
}
int main()
{
    int a[15];
    initRandomize(a, 10, 0, 10);
    cout<<"最大值为:"<<search_max(a, 10)<<endl;
    cout<<"最小值为:"<<search_min(a, 10)<<endl;
    return 0;
}

递归求解最大值和最小值

原文:https://www.cnblogs.com/alking1001/p/11887226.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!