编写一个递归算法,求长度为n的一维数组中的最大元素。
收起
知与谁同
2018-07-19 13:38:07
2241
0
5
条回答
写回答
取消
提交回答
-
冒泡法给·
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