Ver Mensaje Individual
  #9 (permalink)  
Antiguo 26/07/2007, 00:49
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Tiempo de ejecucion menor

Cita:
Iniciado por locoporelrojo Ver Mensaje
Asi es, un método recursivo es más optimo en cuanto al tiempo de ejecución que un bucle
No estoy de acuerdo. El coste de llamar a un metodo y recuperar lo que devuelve es mucho mayor que hacer una comparación o dos extra, cosa que un calculo simple de complejidad no tiene en cuenta.

Para muestra, un botón:
Código:
static int factorial(int n)
  {
    if (n <= 1)
    {
      return 1;
    }
    else
    {
      return n * factorial(n - 1);
    }
  }
Código:
static int factorial_2(int n)
  {
    if (n <= 1)
    {
      return 1;
    }
    else
    {
      int fact = n;
      for (int i = n - 1; i > 1; i--)
      {
        fact *= i;
      }
      return fact;
    }
  }
El segundo método(bucle) se ejecuta, en mi maquina, más del doble de rápido que el primero(recursión).

Aparte de que con la recursión, con n mayor que 12000 y pico empieza a saltarme StackOverflowError, y con el bucle puedo seguir hasta que los int se me salgan de rango.

Así que como regla general... yo no diría que la recursión es más rápida. Para mi siempre ha sido: recursion -> claro, limpio y limitado; bucle -> más complejo, más rápido y menos limitado.

S!