#include <stdio.h>
int process(int arr[], int L, int R);
int max(int lm, int rm);
int main() {
int arr1[] = { 14, 5, 6, 3, 8, 5, 6, 4 };
int max = process(arr1, 0, (sizeof(arr1) / sizeof(arr1[0])) - 1);
printf("%d", max);
}
int max(int lm, int rm) {
return lm > rm ? lm : rm;
}
int process(int arr[], int L, int R) {
if (L == R) {
return arr[L];
}
int mid = L + (R - L) >> 1;
if (mid > 0) {
int leftMax = process(arr, L, mid);
int rightMax = process(arr, mid + 1, R);
return max(leftMax, rightMax);
} else {
return 0;
}
}
Sou um novato, recentemente comecei a aprender algoritmos. Este é um procedimento para encontrar o valor máximo de um array por divisão e conquista. Ele foi transplantado do java, fiz alguns ajustes. Mas quando eu o executo, acontece uma falha de segmentação.