Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2023/2024

Ejemplo de error en el ejercicio 2.d del tema 2

La siguiente solución no funciona correctamente. Piensa qué es lo que está mal.

int Cola::buscarPosicion(int dato) const {

   return buscarPosicion(dato, primero, 0);

}

int Cola::buscarPosicion(int dato, Nodo * n, int contador) const {

   if (n == nullptr)
      return -1;
  
   if (n->dato == dato)
      return contador;

   return buscarPosicion(dato, n->siguiente, contador++);

}
      

¿Por qué es incorrecta?

El error en esta solución es poner contador++ en vez de contador + 1. Eso es incorrecto porque contador++ incrementa contador y devuelve como resultado lo que valía antes del incremento; lo que devuelve como resultado sería lo que estaríamos pasando como argumento.

En el ejercicio 11.b del tema 1 se explica esto.