Ejemplos de recursividad. Calcular el cociente de dos números enteros.

Programa Java que calcule el cociente de dos números enteros de forma recursiva.

La solución recursiva del problema se plantea de la siguiente forma:

Caso Base: Si el dividendo es menor que el divisor el cociente es cero.

Si no, se restan el dividendo y el divisor. Al resultado se le vuelve a restar el divisor. Esta resta se repite mientras se pueda realizar, o sea, mientras el resultado sea mayor o igual que el divisor.
El número de veces que se ha hecho la resta es el cociente.

Con un ejemplo lo veremos más claro. Por ejemplo, para dividir 10 entre 3 haríamos:

10 - 3 = 7
7 - 3 = 4
4 - 3 = 1

No se puede seguir restando ya que el último valor obtenido (1) es menor que el divisor. Como se han realizado 3 restas el cociente es 3.
//Programa Java para calcular el cociente de la división de forma recursiva
import java.util.Scanner;
public class CocienteRecursivo {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1, n2;

        System.out.print("Introduzca dividendo: ");
        n1 = sc.nextInt();

        do {
            System.out.print("Introduzca divisor (>0): ");
            n2 = sc.nextInt();
        } while (n1 <= 0);

        System.out.printf("%d/%d = %d %n", n1, n2, cociente(n1, n2));
    }

    //método recursivo para calcular el cociente de la división de dos enteros                                    
    public static int cociente(int a, int b) {
        if (a < b){
            return 0;
        } else {
            return 1 + cociente(a - b, b);
        }
    }
}

12 comentarios:

  1. me fue de gran ayuda tu explicacion , gracias

    ResponderEliminar
  2. Saludos y muchas gracias por este material es el mejor que encontré en la web y estoy aprendiendo mucho.
    Mi duda: no logro entender por qué cuando el caso base se cumple no ejecuta la instrucción return 0; sino que ejecuta el codigo else

    ResponderEliminar
    Respuestas
    1. Gracias por el comentario Susy. Espero tener tiempo para seguir subiendo ejercicios. Respecto a tu duda, cuando se cumple el caso base if(a<b) sí se ejecuta return 0; no se ejecuta el else

      Eliminar
  3. Hola alguien por favor me podria decir como hacer una programacion recursiva de la division por favor

    ResponderEliminar
  4. Hola apenas llegue a este sitio el siguiente codigo esta en JavaScript pero funciona al 100% solo seria seguir el algoritmo con el lenguaje de programacion

    considerando que

    dividendo=a
    divisor=b
    cociente=c

    var calculac=(a,b)=>{
    var c
    if(a<b){
    c=0
    }
    else{
    c=a-b
    }

    console.log(`${a} - ${b} = ${c}`)

    if(c<=b) return


    calculac(c,b)
    }

    calculac(10,3)

    ResponderEliminar
  5. Excelentes explicaciones, y muchas gracias para éste blog, soy principiante ahora mismo en programación java y sinceramente
    éste es uno de los pocos blog donde hay teoria y ejercicios muy buenisimos, ahora mismo mientras escribo ésto, estoy
    haciendo un pequeño manual con éste excelente blog, para leer mientras viajo en el autobus por las mañanas, : ) espero así aprender lo más pronto posible.

    Es muy excelente y sigan adelante.
    (7 Noviembre 2018)

    ResponderEliminar
    Respuestas
    1. Muchas gracias Bryan por el comentario. Me alegro de que el blog te esté siendo útil para iniciarte en el mundo de la programación y en el lenguaje Java en particular. Saludos y gracias de nuevo por seguir el blog.

      Eliminar
  6. Tienes un error en la siguiente línea de código:
    do {
    System.out.print("Introduzca divisor (>0): ");
    n2 = sc.nextInt();
    } while (n1 <= 0);

    En el while, deberías comparar n2 no n1, sino el usuario te podrá rellenar el divisor con 0, provocando un error.

    ResponderEliminar