利用减半递推技术,写出求长度为n的数组中最大元素的递归算法(用C/C++描述)。设n=2k,其中k≥1。
代码块如下:
#include <iostream>
#include "stdlib.h"
using namespace std;
int maxn(int a[],int m,int n)
{
int x1, x2, k;
if (m == n) return (a[m - 1]);
else
{
x1 = maxn(a, m, (m + n) / 2);
x2 = maxn(a, (m + n) / 2 + 1, n);
if (x1 > x2) k = x1;
else k = x2;
return k;
}
}
int main()
{
int n, i;
int a[1024];
cout << "input the array lenth:\t";
cin >> n;
cout << "\ninput the array members:\t";
for (i = 0;i < n;i++)
cin >> a[i];
cout << "该数组的最大元素为:" << maxn(a, 0, n) << endl;
system("pause");
return 0;
}