
public class Divisiones {
	public static int pasos=0;
	public static int memo=0;

	public static void paso(){
		pasos++;
	}
	public static void printPaso(){
		System.out.println("Pasos: "+pasos);
	}
	public static void resetPaso(){
		pasos=0;
	}
	public static void memo(){
		memo++;
	}
	public static void resetMemo(){
		memo=0;
	}
	public static void printMemo(){
		System.out.println("Memoria: "+memo);
	}
	/**
	 * Hacer la division por restas
	 * @param dividendo
	 * @param divisor
	 * @return
	 */

	public static int divisionEntera(int dividendo, int divisor){
		memo();//dividendo
		memo();//divisior
		memo();//cociente;
		int cociente=0;
		paso();//declaracion 
		paso();//Asignacion
		paso();//comparacion
		if(dividendo==divisor){
			paso();//Asignacion
			cociente=1;
		}else {
			paso();//comparacion
			if(divisor>dividendo){
				paso();//Asignacion
				cociente=0;
			}else{
				while(dividendo>=divisor){
					dividendo-=divisor;
					cociente++;
					paso();//incremento 
					paso();//resta
					paso();//asignacion

				}
				paso();//comparacion
			}
		}
		paso();//return
		return cociente;
	}
	/**
	 * 
	 * @param dividendo
	 * @param divisor
	 * @return
	 */
	public static int divisionEnteraRec(int dividendo, int divisor){
		memo();//dividendo
		memo();//divisior
		paso();//comparacion
		if(divisor>dividendo){
			paso();//return 
			return 0;
		}else {
			paso();//comparacion
			if(dividendo==divisor){
				paso();//return 
				return 1;
			}else{
				paso();//return 
				paso();//resta 
				paso();//suma 
				return 1+divisionEnteraRec(dividendo-divisor,divisor);	
			}
		}
	}	
	public static void main(String[] args) {
		System.out.println("El cociente es: "+divisionEntera(100,2));
		printPaso();
		resetPaso();
		printMemo();
		resetMemo();
		System.out.println("El cociente es: "+divisionEnteraRec(100,2));
		printPaso();
		resetPaso();
		printMemo();
		resetMemo();

	}

}
