开发者社区> 问答> 正文

编写一个递归算法,求长度为n的一维数组中的最大元素。

谢谢啊。

展开
收起
知与谁同 2018-07-19 13:38:07 2166 0
5 条回答
写回答
取消 提交回答
  • TA有点害羞,没有介绍自己...
    冒泡法给·
    2019-07-17 22:55:44
    赞同 展开评论 打赏
  • #include <iostream.h>
    int ff(int *pn,int i)
    {
    if(i==1)
    return pn[1]>pn[0]?pn[1]:pn[0];
    else
    return pn[i]>ff(pn,i-1)?pn[i]:ff(pn,i-1);
    }
    int main()
    { int n,*pn,i,max;
    cin>>n;
    pn=new int [n];
    for(i=0;i<n;i++) cin>>pn[i];
    max=ff(pn,n);
    cout<<max<<endl;
    return 0;
    }
    2019-07-17 22:55:44
    赞同 展开评论 打赏
  • 『呵呵~~

    『既然只要求最大元素的话

    『只要冒一次(从左到右)泡就行了吧。。。。

    『从a[0]到a[n-1],两两比较

    『程序的话有点懒^^ 还是自己写吧。。。
    2019-07-17 22:55:44
    赞同 展开评论 打赏
  • #include<stdio.h>
    #define N 10//由于数组大小不可改变,故定义宏,可修改

    int max(int*a,int n,int big)
    {
    if(n==-1)return big;
    else{
    if(a[n]>big){
    return max(a,n-1,a[n]);
    }
    else return max(a,n-1,big);
    }
    }

    int main()
    {
    int i,big,a[N];
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    big=max(a,N-1,-9999999);
    printf("The biggest is %d\n",big);
    }
    2019-07-17 22:55:44
    赞同 展开评论 打赏
  • 胜天半子
    楼上的代码写得有点繁琐,其实一个简单的if结构就可以实现这个递归。
    #include <iostream>
    using namespace std;

    int max(int [],int); // max函数原型
    int main()
    {
    int a[10]={1,3,8,2,4,9,5,7,6,0};
    cout << "a数组最大元素为:" << max(a,10) << endl;
    return 0;
    }
    int max(int arr[], int size) // max函数定义
    {
    if (size == 2)
    return arr[0] > arr[1] ? arr[0] : arr[1];
    else
    return max(arr,size - 1) > arr[size - 1] ? max(arr,size - 1) : arr[size - 1];
    }
    2019-07-17 22:55:44
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载