Larback - Retornando conhecimento

Quanto é o programa? Depende da linguagem.

Somando elementos de um vetor utilizando divisão e conquista em java

Divisão e Conquista: É uma técnica de projeto de algoritmos que consiste em dividir um problema maior recursivamente em problemas menores até que o problema possa ser resolvido diretamente. A técnica soluciona o problema através de três fases: * Divisão: o problema maior é dividido em problemas menores e os problemas menores obtidos são novamente divididos sucessivamente de maneira recursiva. * Conquista: o resultado do problema é calculado quando o problema é pequeno o suficiente. * Combinação: o resultado dos problemas menores são combinados até que seja obtida a solução do problema maior. Façamos um pequeno exemplo em java: Vamos somar todos os elementos de um vetor usando essa técnica:
public class Exemplo {
 public static int DeCSum(int[]a, int inicio, int fim){
        if (inicio==fim){ // apenas um elemento, a soma é ele próprio
            return a[inicio];
        } else { // Meu problema ainda pode ser dividido em pedaços menores
            int meio = (inicio+fim)/2;
            int v1 = DeCSum(a,inicio,meio);
            int v2 = DeCSum(a,meio+1,fim);
            // Agora, basta somar os retornos e retornar a soma =]
            return v1+v2;
        }
    }
    
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5,6,7,8,9,100};
        int v = 1;
        System.out.println("Soma: "+DeCSum(a,0,a.length-1));
     }
}