Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2023/2024

"Ejemplos de errores de programación básica relacionados con lo que devuelven o no las funciones", o "Cómo es posible aprobar dos asignaturas de programación de primer curso sin saber esto"

En los siguientes dos ejemplos, se está utilizando correctamente return para devolver un resultado en una función que debe devolver un resultado:

Sin embargo, lo que se hace en los siguientes ejemplos, que ilustran errores típicos de estudiantes, es incorrecto, por alguno de estos motivos:

  1. no devolver ningún resultado en funciones que deben devolverlo;

  2. en funciones que no deben devolver ningún resultado, tratar de devolverlo o trabajar como si lo devolvieran;

  3. llamar a una función para obtener el resultado que devuelve y no hacer nada con él.

Error 1

int factorial (int n) {

   if (n <= 1)
      return 1;
   else
      n * factorial(n - 1);

}

int main () {

   cout << factorial(7);

}
	

Error 2

void mostrarVectorAlReves(const vector<int> & v, int fin) {

   if (fin >= 0) {
      cout << v[fin] << endl;
      return mostrarVectorAlReves(v, fin - 1);
   }

}

void mostrarVectorAlReves(const vector<int> & v) {

   return mostrarVectorAlReves(v, v.size() - 1);

}
	

Error 3

void mostrarVectorAlReves(const vector<int> & v, int fin) {

   if (fin >= 0) {
      cout << v[fin] << endl;
      cout << mostrarVectorAlReves(v, fin - 1);
   }

}

void mostrarVectorAlReves(const vector<int> & v) {

   cout << mostrarVectorAlReves(v, v.size() - 1);

}
	

Error 4

bool buscarDato(const vector<int> & v, int dato, int fin) {

   if (fin < 0)
      return false;
   
   buscarDato(v, dato, fin - 1);

   return v[fin] == dato;
   
}

bool buscarDato(const vector<int> & v, int dato) {
   
   return buscarDato(v, dato, v.size() - 1);

}