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.*;
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);
    }
}


9 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
  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