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


11 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
  2. Respuestas
    1. me alegro de que te haya servido de ayuda ;)

      Eliminar
  3. Muchas gracias por el ejemplo! :D

    ResponderEliminar
  4. 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
  5. me pueden hacer el favor de decirme para que sirve .. import java .io.x

    ResponderEliminar
    Respuestas
    1. para poder trabajar con entradas y salidas de datos

      Eliminar
  6. 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
  7. es la llibreria para leer datos por teclado io=input y out entrada y salida de datos

    ResponderEliminar