Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: josephb401 en 03 de Diciembre 2015, 03:06

Título: Java recursión truco de gauss o gaussTrick suma recursiva de n números
Publicado por: josephb401 en 03 de Diciembre 2015, 03:06
¿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;
 
 
}
 
}
Título: Re:Java recursión truco de gauss o gaussTrick suma recursiva de n números
Publicado por: Alex Rodríguez 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