Ejemplos de Recursividad. Suma Recursiva de números desde 1 hasta N en Java

Programa recursivo que calcula la suma desde 1 hasta un número entero N leído por teclado.

La solución recursiva se basa en lo siguiente:

Caso Base: Si n == 1 la suma es 1   

Si n > 1
la suma es n + (la suma de los anteriores números hasta 1)
Por ejemplo, si n = 5, la suma es 5 más la suma desde 1 hasta 4. A su vez la suma si n = 4 es 4 + la suma desde 1 hasta 3 y así sucesivamente hasta llegar al caso base como se muestra en la imagen.

El programa que calcula la suma desde 1 hasta N de forma recursiva es el siguiente:

import java.util.Scanner;
public class Suma1N {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;
        do{
           System.out.print("Introduce un numero entero >0 ");
           num = sc.nextInt();
        }while(num <= 0);
        System.out.println("Suma desde 1 hasta " + num + " = " + suma1N(num));                                    

    }

    //método recursivo para calcular la suma desde 1 hasta N
    public static double suma1N(int n){
           if(n == 1) { //caso base
              return 1;
           } else {
              return n + suma1N(n-1);
           }
    }
}

24 comentarios:

  1. oye una pequeña ayuda como hago para hacer una suma de radicales usando el metodo recursivo es decir
    V1 + V2 + V3 .......+ Vn

    ResponderEliminar
  2. Hola;yo hice este método para suma de números pares;
    if(n==2){
    return 2;
    }else{
    return n+ sumatoriaPares(n-2);
    }
    }
    cómo excluyo los impares?o el 0 y 1? Gracias.

    ResponderEliminar
    Respuestas
    1. public int SumaPares(int n) {
      return n==0?0:n%2==0?n+SumaPares(n-1):SumaPares(n-1);
      }

      Eliminar
    2. Version larga:
      public static int SumaPares2(int n) {
      if (n == 0) //Caso base n=0
      return 0;
      else
      if (n % 2 == 0) //si el residuo de n/2 es 0, el numero el par
      return n + SumaPares(n - 1); //Cuando es par acumula n
      else
      return SumaPares(n - 1); //Cuando es impar no acumula
      }

      Eliminar
    3. Version larga:
      public static int SumaPares2(int n) {
      if (n == 0) //Caso base n=0
      return 0;
      else
      if (n % 2 == 0) //si el residuo de n/2 es 0, el numero el par
      return n + SumaPares(n - 1); //Cuando es par acumula n
      else
      return SumaPares(n - 1); //Cuando es impar no acumula
      }

      Eliminar
    4. public int SumaPares(int n) {
      return n==0?0:n%2==0?n+SumaPares(n-1):SumaPares(n-1);
      }

      Eliminar
    5. Alguien me puede hacer uno de if y else para que solo me imprima 1 2 3 4 5 metiendo el 0 y de ahi la recursividad ?

      Eliminar
    6. Version larga:
      public static int SumaPares2(int n) {
      if (n == 0) //Caso base n=0
      return 0;
      else
      if (n % 2 == 0) //si el residuo de n/2 es 0, el numero el par
      return n + SumaPares(n - 2); //Cuando es par acumula n
      else, restando 2 te ahorras iteraciones, solo compara los pares una vez que haya uno
      return SumaPares(n - 1); //Cuando es impar no acumula
      }

      Eliminar
  3. suma de digitos pares.

    public class pares {

    public int SumaPares(int n) {
    if (n<2) //Caso base n=0
    return 0;
    else
    if (n % 2 == 0) //si el residuo de n/2 es 0, el numero el par
    return n%10 + SumaPares(n/10); //Cuando es par acumula n
    else
    return SumaPares(n/10); //Cuando es impar no acumula
    }

    }

    ResponderEliminar
  4. suma de digitos pares.

    public class pares {

    public int SumaPares(int n) {
    if (n<2) //Caso base n=0
    return 0;
    else
    if (n % 2 == 0) //si el residuo de n/2 es 0, el numero el par
    return n%10 + SumaPares(n/10); //Cuando es par acumula n
    else
    return SumaPares(n/10); //Cuando es impar no acumula
    }

    }

    ResponderEliminar
  5. que le falta para hacer la suma recursiva de un millon

    ResponderEliminar
  6. Hola! alguien sabe como hacer un arreglo con n números con el método de recursividad? Agradecería a quien me ayudara.

    ResponderEliminar
  7. alguien que me ayude con esta pregunta
    programar con recursividad y simulacion que imprima todas las posibles descompociciones de un numero natural positivo como suma de numeros menoress que el, el programa le debe permitir al usuario ingresar los valores para n desde la consola

    ResponderEliminar
  8. necesito sacar la operacion y resultadn para pasar a java 6+(3+4)-2-(3*5)+2
    me podian colaborar gracias

    ResponderEliminar
  9. Pueden ayudarme con este problema??

    Consideremos un triángulo, donde los números aparecen de la siguiente forma, uno para el nivel 1, dos números para el nivel 2, 3 números para el tercer nivel, etc. Crea un programa que calcula la máxima suma que pueda aparecer en los recorridos, recorriendo de arriba hacia abajo, los números con los que puede calcular los recorridos son solo un número por nivel, y se puede sumar con el que está abajo y con el que está una posición abajo y una a la derecha, el número de filas es positivo. Utilizar una solución recursiva para el problema.

    ResponderEliminar
  10. Alguien puede ayudarme con este programa?... Consideremos una función que recibe un numero n e imprime los números del n al 1 con recursividad.
    Gracias!

    ResponderEliminar
  11. como puedo hacer un método de suma de números múltiplos de x numero, de un árbol binario

    ResponderEliminar
  12. Como hago el mismo programa pero para contar los pares de un arreglo?

    ResponderEliminar
  13. como puedo desarrollar una función recursiva que reciba como parámetro un número y obtener la suma de los dígitos pares de dicho número









    ResponderEliminar
  14. Escribir un programa de manera recursiva que encuentre la suma de los enteros positivos pares desde a hasta b. Chequear que si a y/o b es impar se imprima un mensaje de error. alguien que me pueda ayudar en el programa de colab

    ResponderEliminar
  15. como puedo hacer una suma que en vez de cin y cout tenga printf y scatf

    ResponderEliminar