Autor Tema: Java recursión truco de gauss o gaussTrick suma recursiva de n números  (Leído 4431 veces)

josephb401

  • Visitante
¿Puede alguien decirme cómo arreglar mi código? Dejaré las descripciones que tuve para el programa.

Escriba un método que acepta un argumento entero positivo y devuelve la suma de todos los números enteros de 1 hasta al número pasado como argumento. Por ejemplo, si se pasa 50 como argumento, el método devolverá la suma de 1, 2, 3, 4, .., 50.

Utilice la recursividad para calcular la suma.

Demostrar el método en un programa. (Si lo desea, puede revisar su trabajo con la fórmula n (n + 1) / 2 , pero usted debe escribir un método recursivo para calcular la suma.)

Mano en su clase o clases.

* Esto se llama truco de Gauss, y aquí es una versión de la historia:

Gauss contó la historia que cuando él era un niño, el maestro se quedó sin cosas para enseñar y pidió que, en el tiempo restante antes de tiempo de juego, para calcular la suma de todos los números del 1 al 20 (o similar ... En realidad, las cifras fueron del 1 al 40!).

Gauss pensó que 1 + 20 es 21. Y 2 + 19 también es 21. Y esto es cierto para todos los pares similares, de los cuales hay 10. Así que ... la respuesta es 210.

Código: [Seleccionar]
public class GaussTrick
{
//public static int num = 50;
public static int count = 0;
public static int halfNum = (50 / 2);;
public static int total= 0;
 
public static void main(String[] args)
{
 
int num = 50;
 
System.out.print(SumOfInt(num) );
 
SumOfInt(num);
 
//count = (20 * (20+1) / 2);System.out.print(count);
 
}
 
public static int SumOfInt(int num)
{
if(num == halfNum)
return total;
 
num--;
count++;
 
total = (num + count);
 
SumOfInt(num);
 
System.out.println(total);
 
return total;
 
 
}
 
}
« Última modificación: 05 de Diciembre 2015, 12:33 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Java recursión truco de gauss o gaussTrick suma recursiva de n números
« Respuesta #1 en: 05 de Diciembre 2015, 12:48 »
Hola la recursividad es algo relativamente complejo de entender y de programar

Algunos hilos interesantes para entender la recursividad:

https://www.aprenderaprogramar.com/foros/index.php?topic=2154.0

https://www.aprenderaprogramar.com/foros/index.php?topic=511.0

https://www.aprenderaprogramar.com/foros/index.php?topic=1493.0

Este código sería un ejemplo para resolver el problema planteado:

Código: [Seleccionar]
public class GaussTrick {
 

    public static void main(String[] args)    {
        int inicio = 1;
        int fin = 50;
        System.out.println("La suma recursiva de "+inicio + " hasta "+ fin + " es " + SumaRecursivaDeNaM(inicio, fin) );   
        System.out.println ("Comprobación con la fórmula: n * (n+1) / 2 vale " + fin * (fin+1) /2 );
       
       
    }

    public static int SumaRecursivaDeNaM(int n, int m) {
        if(n == m) { return m;}
       return n+SumaRecursivaDeNaM (n+1, m);
    }
}

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".