#include <stdio.h>
int divideLandRecursive(int land[], int start, int end) {
if (start == end) {
return land[start];
}
int mid = (start + end) / 2;
int leftArea = divideLandRecursive(land, start, mid);
int rightArea = divideLandRecursive(land, mid + 1, end);
int crossArea = land[mid] + land[mid + 1];
return leftArea + rightArea + crossArea;
}
int divideLandIterative(int land[], int n) {
if (n == 0) {
return land[0];
}
int totalArea = 0;
int i;
for (i = 0; i < n; i += 2) {
totalArea += land[i] + land[i + 1];
}
if (n % 2 == 1) {
totalArea += land[n - 1];
}
return totalArea;
}
int main() {
int land[] = {3, 1, 6, 2, 4};
int n = sizeof(land) / sizeof(land[0]);
int totalAreaRecursive = divideLandRecursive(land, 0, n - 1);
int totalAreaIterative = divideLandIterative(land, n);
printf("递归算法总面积:%d\n", totalAreaRecursive);
printf("递推算法总面积:%d\n", totalAreaIterative);
return 0;
}