Ejemplos de recursividad. Sumar dos números enteros

Método java que calcula la suma de dos números enteros de forma recursiva. 

La solución recursiva para sumar dos números enteros se basa en lo siguiente:

Caso Base:

Si uno de los números es igual a cero, la suma es el otro número.

Por ejemplo, si queremos sumar a=3 y b=0 la suma es igual a a: suma=3

si a == 0
   la suma es b  
sino si b == 0
          la suma es a

Procedimiento recursivo:

Si ninguno de los dos números a sumar es igual a cero, la suma de ambos la podemos expresar como:

suma = 1 + suma(a, (b-1))

Por ejemplo:
Dados los números a=3 y b =4
la suma de 3 + 4 es igual que sumar 1 + (3 + 3)
A su vez, sumar 3 + 3 es igual que 1 + (3 + 2)

Si repetimos el proceso hasta que b sea 0 obtendremos la suma de forma recursiva:


El código del método es el siguiente:

/*
 *   Método recursivo que calcula la suma de dos números enteros
 */
public static int suma(int a, int b) {                                                                            
    if (b == 0) {
        return a;
    } else if (a == 0) {
               return b;
    } else {
          return 1 + suma(a, b - 1);                                                                              
    }
}
Como ejemplo de uso vamos a escribir un programa que lee dos números enteros y muestra la suma utilizando el método recursivo:

import java.util.*;
public class Recursividad1 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1, n2;
        System.out.print("Introduzca primer numero: ");                                                           
        n1 = sc.nextInt();
        System.out.print("Introduzca segundo numero: ");
        n2 = sc.nextInt();
        System.out.println("suma: " + suma(n1, n2));                                                              

    }
    public static int suma(int a, int b) {
        if (b == 0) {
            return a;
        } else if (a == 0) {
            return b;
        } else {
            return 1 + suma(a, b - 1);
        }
    }
}

16 comentarios:

  1. private static int sumar2(int num1,int num2){

    if(num1==0)
    return num2;
    else{
    if(num2!=0)
    return sumar2(num1,num2-1)+1;
    else
    return sumar2(num1-1,num2)+1;
    }

    }f

    ResponderEliminar
    Respuestas
    1. tu código está mucho mejor, con el anterior me marcaba varios errores, gracias.

      Eliminar
    2. el primero marcaba error porque faltaba cerra con un }

      Eliminar
    3. Al final de cuentas es lo mismo solo basta con hacer la prueba de escritorio para comprender que si el número menor de los 2 ingresados llega a 0 retorna el mayor y viceversa, cuando esto pasa rompe el proceso de recursividad y retorna el valor mayor ingresado que puede ser a o b y comienza a incrementar de uno desde el valor mayor sumando adicionalmente 1

      Eliminar
  2. Muchas gracias por el ejemplo! :D

    ResponderEliminar
  3. COMO HAGO UN PROGRAMA QUE IMPLEMENTE LA UN FUNCIÓN RECURSIVA
    F(N)=3F(N-1)+F(N-2)
    F(N-1) N ES PAR
    N N<=0

    ResponderEliminar
  4. me pueden hacer el favor de decirme para que sirve .. import java .io.x

    ResponderEliminar
  5. Diseñar un Programa en JAVA, que permita calcular y mostrar el Producto (n*n-1*n-2*n-3*…… 4*3*2*1) de un Número entero “n” que debe ser ingresado por teclado (Utilice una sola clase y TEXTPAD y debe utilizar obligatoriamente un método recursivo (Llamada a él mismo)

    ResponderEliminar
  6. es la llibreria para leer datos por teclado io=input y out entrada y salida de datos

    ResponderEliminar
  7. como puedo crear un programa utilizando la recursividad para obtener la suma total de números, estos son almacenados en un acumulador, mostrar la suma total cuando el usuario capture el valor de 0

    ResponderEliminar
  8. Implemente un método recursivo en Java que determine si un valor está o no contenido
    en un árbol y calcule su complejidad algorítmica.

    ResponderEliminar