利用递推减半技术,写出求长度为n的数组中最大元素的C++递归算法
时间: 2024-05-14 22:11:44 浏览: 75
好的,我可以回答这个问题。以下是利用递推减半技术,写出求长度为n的数组中最大元素的C递归算法:
```
#include <stdio.h>
int getMax(int arr[], int start, int end) {
if (start == end) { // 只有一个元素
return arr[start];
} else if (start + 1 == end) { // 有两个元素
return arr[start] > arr[end] ? arr[start] : arr[end];
} else { // 有多个元素
int mid = (start + end) / 2;
int max1 = getMax(arr, start, mid);
int max2 = getMax(arr, mid + 1, end);
return max1 > max2 ? max1 : max2;
}
}
int main() {
int arr[] = {10, 5, 17, 28, 3, 15};
int size = sizeof(arr) / sizeof(int);
int max = getMax(arr, 0, size - 1);
printf("The maximum element is %d\n", max);
return 0;
}
```
这个算法的基本思路是对数组进行递归分治,每次将数组分成两个部分。一直递归到只有一个元素或两个元素时,比较它们的大小并返回较大的数值。最后将所有返回来的数值进行比较,得到最大元素。
阅读全文