Recursividade e outros

5 respostas
E

Problema:

Escreva uma classe contendo um método que receba como argumento um inteiro positivo N e retorna a soma de todos os numeros inteiros entre 0 e N.

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package testacalculadora;

/**
*

  • @author Mary
    */
    public class TestaCalculadora {

    public static int somaNumeros(int quantidade){
    
    if(quantidade==1) return 1;
    
    else
    
    return(quantidade + somaNumeros(quantidade-1));
    

    }

import java.util.Scanner;

public class TestaCalculadora{

public static void main(String[] args) {

int quantidade;

Scanner s = new Scanner (System.in);

System.out.println("Digite um numero: ");

quantidade = s.nextInt();
}  

    public int somaNumeros(int quantidade){
        if(quantidade ==1) return 1;
        else
            
            return (quantidade + somaNumeros(quantidade-1));

}
}

Não roda e aparece um monte de erros. Alguém pode ajudar?
Na verdade, seria um programa pra demonstrar um método recursivo.
Minhas dúvidas:
O método somaNumeros não deve ser definido na classe TestaCalculadora, para que eu possa, então, fazer a instanciação e usar o segundo código?

5 Respostas

airtonarantes

Favor colocar o código entre tags code.

eletrik:
:

Não roda e aparece um monte de erros. Alguém pode ajudar?

Poderia postar os erros?

Na verdade, seria um programa pra demonstrar um método recursivo. Minhas dúvidas: O método somaNumeros não deve ser definido na classe TestaCalculadora, para que eu possa, então, fazer a instanciação e usar o segundo código?

Eu fiz algumas alterações no seu "programa" :P , dê uma olhada ai:

import java.util.Scanner; // coloque esse import no inicio do programa

public class Forum{
    public static int somaNumeros(int quantidade){
    if(quantidade==1) 
        return 1;
    else
        return(quantidade + somaNumeros(quantidade-1));
    }
////////////////////////////////////////////////////////////////////////////////
    
    public static void main(String[] args) 
    {
        int quantidade;
        Scanner s = new Scanner (System.in);
        System.out.println("Digite um numero: ");
        quantidade = s.nextInt();
        System.out.println("Quantidade = "+somaNumeros(quantidade));

    }
////////////////////////////////////////////////////////////////////////////////

}
airtonarantes

Se você fizer um método static, não precisará instanciar um objeto para usar o método, caso contrário, terá que ter um objeto para poder chamar o tal método.

E

Sim, por favor, diga os erros. Você rodou esse seu código? Qual o editor q vc usa, a proposito?

airtonarantes

Rodei esse código no NetBeans 6.1.

Já que você pediu para apontar os erros.

* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package testacalculadora;

/**
*
* @author Mary
*/
//NAO PRECISA USAR ESSA CLASSE, APAGUE E USE A DEBAIXO
public class TestaCalculadora {

public static int somaNumeros(int quantidade){
if(quantidade==1) return 1;
else
return(quantidade + somaNumeros(quantidade-1));

}

import java.util.Scanner; // NAO IMPORTE ISSO AKI, IMPORTE NO INICIO DO PROGRAMA

public class TestaCalculadora{//ESSA CLASSE JA FOI DEFINIDA ACIMA
public static void main(String[] args) {
int quantidade;
Scanner s = new Scanner (System.in);
System.out.println("Digite um numero: ");
quantidade = s.nextInt();
//VOCE AQUI SO ATRIBUIU O VALOR NA VARIAVEL QUANTIDADE. DEPOIS DISSO O PROGRAMA FAZ O QUE?
}

public int somaNumeros(int quantidade){ // COLOQUE ESSE METODO COMO STATIC, ASSIM VOCE NAO PRECISARÁ CRIAR UM OBJETO PARA CHAMAR O METODO
if(quantidade ==1) return 1;
else

return (quantidade + somaNumeros(quantidade-1));
}
}
E

Ok. Vou tentar consertar…
Obrigada.

Criado 21 de setembro de 2008
Ultima resposta 21 de set. de 2008
Respostas 5
Participantes 2