Tenía una tarea que pedía una función que utiliza la recursión directa para encontrar el índice del entero más negativo a la izquierda en una matriz. Los requisitos adicionales eran para los parámetros de la función para ser la matriz y el tamaño y que el valor de retorno para ningún valor válido era -999.¿Es posible la recursión de cola si una comparación depende del valor de retorno?
me ocurrió esto:
int LowIndexMinNeg(int src[], int size)
{
if (size == 0)
return -999;
int index = LowIndexMinNeg(src, size - 1);
if (index >= 0)
return (src[size - 1] < src[index]) ? (size - 1) : index;
else
return (src[size - 1] < 0) ? (size - 1) : index;
}
Funciona, satisface los requisitos, y me tiene todo el crédito. ¿Puede esto implementarse con recursividad de cola?
Me parece que ya que tiene que tomar el resultado de la llamada recursiva para usar en una comparación para decidir si pasa eso o actualizarlo que no sería posible, pero la recursión todavía ata a mi cerebro en lo adosa así que puede haber algo obvio que me estoy perdiendo.
Nota: Mi tarea asignada ya fue entregada y calificada.
no veo la forma dada el requisito de firma. –
Gracias a todos por sus respuestas. Todos fueron útiles para aumentar mi comprensión. – Matt