Recursividad

he estado leyendo el libro de ‘Java Script: The Good Parts’ , y me tome con una técnica interesante …

Por esta ocasión vamos a poner un pequeño ejemplo, después trataré de explicarlo, al menos lo que yo entendí.

Código [JavaScript]:

//resolver la torre de hanoi :]
var hanoi = function hanoi(disco, origen, auxiliar, destino){
     if(disco > 0){
          hanoi(disco - 1 , origen, destino, auxiliar);
          document.writeln('Mover disco '+ disco + ' de ' + origen + ' a ' + destino + '<br />');
          hanoi(disco - 1, auxiliar, origen, destino);
     }
};
hanoi(4, 'Origen', 'Auxiliar', 'Destino');

Bien al ejecutar la función en este caso con discos = 4, nos mostraría los 15 movimientos para poder resolver la torre. Ahora que ya vimos la magia vayamos a explicar.

Una función recursiva, es una función que se llama a si misma, ya sea directa o indirectamente. La recursividad es una poderosa técnica de programación en el que un problema se divide en un conjunto de subproblema similares, cada uno resuelto con una solución trivial. En general, una función recursiva se llama a sí misma para resolver sus subproblemas.

Y el riesgo apa? .. Bueno pues en realidad todo se reduce al uso de memoria, ya que lo que esta haciendo es crear n numero de ‘referencias’ a si misma, y en que se traduce esto en reservar memoria por cada referencia, haciendo algunos ejemplos según yo no es infinita en algún momento hay un buffer overflow, así que habrá que tener mucho cuidado al momento de usar este jutsu XD

Dudas, criticas y correcciones en buen pedo! al los comentarios.. en mal pedo pos también xD

Include o Require (PHP)

Todos lo que hemos usado un poquito PHP, hemos llegado a este dilema…

Usar

  • include();
  • include_once();
  • require();
  • require_once();
La declaración require(); sustituye el código antes de que se ejecute el script, mientras que con include(); la sustitución se realiza en tiempo de ejecución. Una gran diferencia pero no la única. Si usas include(); e intentas incluir, valga la redundancia, un archivo que no existe te devolverá un warning y el script se seguirá ejecutando. Con require(); en caso de no encontrar el archivo que se requiere te devolverá un error fatal y la ejecución del script se detendrá.

Tanto require_once(); como include_once(); funcionan de la misma manera que sus homónimos nombrados anteriormente, con una única diferencia. Que el código del archivo es agregado una sola vez, evitando redeclaraciones de variables o funciones. Hay que tener en cuenta que require_once e include_once son más pesadas de procesar que require e include, por lo que debemos usarlas con prudencia.

Por ejemplo include(); lo ocuparía para incluir un pie de pagina en html, ya que no habría problema que no lo cargue