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

[复制链接]
查看11 | 回复6 | 2020-2-15 21:03:18 | 显示全部楼层 |阅读模式
楼上的代码写得有点繁琐,其实一个简单的if结构就可以实现这个递归。#includeusingnamespacestd;intmax(int[],int);//max函数原型intmain(){inta[10]={1,3,8,2,4,9,5,7,6,0};coutarr[1]?arr[0]:arr[1];elsereturnmax(arr,size-1)>arr[size-1]?max(arr,size-1):arr[size-1];}
回复

使用道具 举报

千问 | 2020-2-15 21:03:18 | 显示全部楼层
楼上的代码写得有点繁琐,其实一个简单的if结构就可以实现这个递归。#includeusingnamespacestd;intmax(int[],int);//max函数原型intmain(){inta[10]={1,3,8,2,4,9,5,7,6,0};coutarr[1]?arr[0]:arr[1];elsereturnmax(arr,size-1)>arr[size-1]?max(arr,size-1):arr[size-1];}
回复

使用道具 举报

千问 | 2020-2-15 21:03:18 | 显示全部楼层
楼上的代码写得有点繁琐,其实一个简单的if结构就可以实现这个递归。#includeusingnamespacestd;intmax(int[],int);//max函数原型intmain(){inta[10]={1,3,8,2,4,9,5,7,6,0};coutarr[1]?arr[0]:arr[1];elsereturnmax(arr,size-1)>arr[size-1]?max(arr,size-1):arr[size-1];}
回复

使用道具 举报

千问 | 2020-2-15 21:03:18 | 显示全部楼层
楼上的代码写得有点繁琐,其实一个简单的if结构就可以实现这个递归。#includeusingnamespacestd;intmax(int[],int);//max函数原型intmain(){inta[10]={1,3,8,2,4,9,5,7,6,0};coutarr[1]?arr[0]:arr[1];elsereturnmax(arr,size-1)>arr[size-1]?max(arr,size-1):arr[size-1];}楼上的代码写得有点繁琐,其实一个简单的if结构就可以实现这个递归。#include using namespace std;int max(int [],int);// max函数原型int main(){int a[10]={1,3,8,2,4,9,5,7,6,0};coutarr[1] ? arr[0] : arr[1];else
return max(arr,size - 1) > arr[size - 1] ? max(arr,size - 1) : arr[size - 1];}
回复

使用道具 举报

千问 | 2020-2-15 21:03:18 | 显示全部楼层
『呵呵~~『既然只要求最大元素的话『只要冒一次(从左到右)泡就行了吧。。。。『从a[0]到a[n-1],两两比较『程序的话有点懒^^还是自己写吧。。。
回复

使用道具 举报

千问 | 2020-2-15 21:03:18 | 显示全部楼层
#include#defineN10//由于数组大小不可改变,故定义宏,可修改intmax(int*a,intn,intbig){if(n==-1)returnbig;else{if(a[n]>big){returnmax(a,n-1,a[n]);}elsereturnmax(a,n-1,big);}}intmain(){inti,big,a[N];for(i=0;i评论00加载更多
回复

使用道具 举报

千问 | 2020-2-15 21:03:18 | 显示全部楼层
#include int ff(int *pn,int i){ if(i==1) return pn[1]>pn[0]?pn[1]:pn[0]; else return pn>ff(pn,i-1)?pn:ff(pn,i-1);}int main(){ int n,*pn,i,max;cin>>n;pn=new int [n];for(i=0;i>pn;max=ff(pn,n);cout#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); big=max(a,N-1,-9999999); printf("The biggest is %d\n",big);}冒泡法给·
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行