Galera, é o seguinte. Estou estudando recursiva, e testei meu programa de duas maneiras diferentes e nas duas ele fez o proposto.
O enunciado do exercício é:
Enviar a partir do programa principal o valor 1. Calcular a soma dos 100 primeiros números em uma função recursiva e mostrar o resultado no programa principal.
Fiz ele de duas maneiras, e das duas deu certo.
A primeira:
import javax.swing.JOptionPane;
public class recursividade {
public static void main(String args[]){
int num;
num=1;
JOptionPane.showMessageDialog(null, "O valor da soma dos 100 primeiros número e " +FSOMA(num));
}
static int FSOMA(int valor){
int soma;
if(valor==100){
return 100;
}
else{
soma=valor+FSOMA(valor+1);
return soma;
}
}
}
A segunda:
import javax.swing.JOptionPane;
public class recursividade {
public static void main(String args[]){
int num;
num=1;
JOptionPane.showMessageDialog(null, "O valor da soma dos 100 primeiros número e " +FSOMA(num));
}
static int FSOMA(int valor){
int soma;
if(valor==101){
return 0;
}
else{
soma=valor+FSOMA(valor+1);
return soma;
}
}
}
Minha dúvida é justamente essa: por que dos dois jeitos o programa exibiu o resultado 5050 se um está com a condição
if(valor==100){
return 100;
}
e o outro está com a condição
if(valor==101){
return 0;
}
Não consigo entender a diferença de o que acontece no primeiro exemplo e o que acontece no segundo. Essa parte ficou muito abstrata pra mim. Nem consigo fazer o teste de mesa disso. Portanto uma ajuda de vocês seria extremamente bem-vinda.

LP0956
Novo Membro
Registrado
4 Mensagens
2 Curtidas