package recursividad;

public class Recursividad {
	/*
	 * Partimos de 50 dinero que debo. Entrada [20,10,5] Dinero que he dado en algún
	 * punto del tiempo. El método nos tiene que devolver la resta de lo que debo y
	 * el total de lo que he dado. ¿Cuánto debo ahora?
	 */
	public static void main(String[] args) {
		int deuda = 50; // €
		int[] dineroDado = { 20, 10, 5 }; // €
		// Primer planteamiento ¿Va a llegar 50? [Puede llegar ó no] ❌ [Trabajamos
		// certezas no con hipótesis]

		//Llamada → Opción 1.
//		int deudaFinal = 50 - sumaIngresos(dineroDado, 0); // Resultado debe ser 15
		
		//Llamada → Opción 1.
		int deudaFinal = 50 - sumaIngresos(dineroDado, dineroDado.length-1); // Resultado debe ser 15
		
		System.out.println("La deuda final es: "+deudaFinal);

	}
	//Opción 1.
	/*public static int sumaIngresos(int[] dineroDado, int posicion) {
		if (posicion == dineroDado.length) { //Excede los límites del Array. [+]
			return 0;
		} else {
			return (dineroDado[posicion] + sumaIngresos(dineroDado, posicion +1));
		}
	}*/

	//Opción 2.
	public static int sumaIngresos(int[] dineroDado, int posicion) {
		if (posicion == -1) { //Excede los límites del Array. [-]
			return 0;
		} else {
			return (dineroDado[posicion] //Objetivo principal 
					+ sumaIngresos(dineroDado, posicion -1) //Recursividad
					);
		}
	}

}
