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.
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);
}
}
}
me fue de gran ayuda tu explicacion , gracias
ResponderEliminarGracias a ti por visitar mi blog
EliminarGracias
ResponderEliminarSaludos y muchas gracias por este material es el mejor que encontré en la web y estoy aprendiendo mucho.
ResponderEliminarMi 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
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
EliminarHola alguien por favor me podria decir como hacer una programacion recursiva de la division por favor
ResponderEliminarHola 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
ResponderEliminarconsiderando 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)
Excelentes explicaciones, y muchas gracias para éste blog, soy principiante ahora mismo en programación java y sinceramente
ResponderEliminaré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)
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.
EliminarTienes un error en la siguiente línea de código:
ResponderEliminardo {
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.
muy buena
Eliminarconfirmo
Eliminar