e em um metodo auxiliar que desenvolvi para somar numeros menores que um outro, consegui chegar a uma formula, mas axo q meu compilador enlouqueceu, podem dar uma olhada pra mim!
e quanto ao compilador…vc esta tentando colocar 2 metodos iguais na mesma classe?
isso não pode, pelo menos o tipo de entrada/retorno tem que ser diferentes
ou muda o nome de um deles.
guisantogui
Naum naum, eu apaguei um e coloquei o outro!
Felagund
vc pode usar recursividade
[code]
public int somaMen(int i){
if(i == 0){
return 0;
}
return i+somaMen(i-1);
}
[\code]
public static int somaMen(int i){
int a1 = 1;
int an = i-1;
int n = an - a1;
return ((a1 + an) * n) / 2;
}
Não tem como ser mais eficiente do que isso. Pode ter 1000000 de números, que o tempo continuará sendo O(1).
guisantogui
vou dar uma olhada, brigado pela ajuda!
depois tenho um mais complexo para vcs!
rrrsrsrsrsr
mas to sem tempo agora!
sergiotaborda
guisantogui:
Gente tenho um trabalho da facul!
e em um metodo auxiliar que desenvolvi para somar numeros menores que um outro, consegui chegar a uma formula, mas axo q meu compilador enlouqueceu, podem dar uma olhada pra mim!
não entendi o seu problema. O método matemático é o melhor, mais simples e rápido. O método com laço é pior que esse e o método recursivo é o pior de todos.
guisantogui
jah resolvi, obrigado sergio!
se tiverem material de como otimizar os algoritimos podem postar!
marcelo.bellissimo
sergiotaborda:
guisantogui:
Gente tenho um trabalho da facul!
e em um metodo auxiliar que desenvolvi para somar numeros menores que um outro, consegui chegar a uma formula, mas axo q meu compilador enlouqueceu, podem dar uma olhada pra mim!
não entendi o seu problema. O método matemático é o melhor, mais simples e rápido. O método com laço é pior que esse e o método recursivo é o pior de todos.
public static int somaMen(int i){
int a1 = 1;
int an = i-1;
int n = an - a1;
return ((a1 + an) * n) / 2;
}
Não tem como ser mais eficiente do que isso. Pode ter 1000000 de números, que o tempo continuará sendo O(1).
1000000?
bom eu preciso de um q vah a
400000000!
:?
ViniGodoy
Esse aí vai até 4 bilhões. Troque por long e você terá uma quantidade muitíssimo maior. E detalhe, sem aumentar o tempo que se leva para fazer o calculo (já que resolver a fórmula é ridiculamente rápido).
No caso do for, você terá um aumento de tempo linear, o que chamamos de O(N). Haverá um cálculo a mais para cada número a mais na sequência.
No caso da recursividade, a situação é a mesma, tempo de O(N). Entretanto, o tempo de cálculo para cada elemento é maior do que no caso do for, sem falar que consome mais recursos (como o de pilha, que certamente estoura para programas maiores).