- Buenas quisiera saber si esto esta bien, pq anda bien la ejecución, pero es distinto a la solución que ustedes realizaron.

Buenas tardes, a mi la solución me quedo ligeramente distinta es correcto realizarla de la siguiente forma?
void vasosRec ( bool * V, uint inf , uint sup ) {
if ( sup >inf ) {
V[ inf ] = false ;
V[ sup ] = true ;
vasosRec (V, inf + 2, sup - 2);
}
}
void vasos ( bool * V, uint n) { vasosRec (V, 2, n-1); }
La llamada la empece en el vaso 2 ya que no tendría que hacer cambios en el vaso 1, y por la misma razón el valor superior lo tomé como n-1.
Si n fuera 2, entonces en mi caso entiendo que no se ejecutaría nada ya que sup sería inferior a inf.
No sé si es correcto mi razonamiento, me quedó la misma duda al ver el video y la soluciones.
Muchas gracias
hola,
la condición del if no es correcta. fijate que para cualquier n > 2, con n%2=0, cuando invocás a vasosRec la primera vez con n-1 (impar) y en todos los casos entrarías al if, lo cual es incorrecto.
en las llamadas recursivas no tendrías ese problema porque invocás achicando el dominio 4 posiciones y por lo tanto se invoca con n par.
saludos
Muchas gracias por tu respuesta, de todos modos no me quedó claro en qué casos sería incorrecto entrar al if con la primera llamada. Entiendo que si los vasos son pares la primer llamada me quedaría, con inf=2 (ya que lo definí así en la función) y el sup=7(si n fuera 8, siendo siempre impar si n es par) y ahí si tendría que entrar al if para cambiarlos. Y en la última llamada recursiva luego de cambiar los vasos del medio, ya no entra en el if porque el valor inferior supera al superior.
Estuve pensando y no logro darme cuenta con que valores que cumplan las precondiciones estaría siendo incorrecto entrar en el primer if.
Muchas gracias
hola,