Foros del Web » Programando para Internet » PHP »

Recursividad en PHP

Estas en el tema de Recursividad en PHP en el foro de PHP en Foros del Web. Buenas tardes, Estoy empezando con PHP y no entiendo lo que es la recursividad en PHP. Entiendo que así se le llama a una función ...
  #1 (permalink)  
Antiguo 08/12/2011, 11:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 4 meses
Puntos: 9
Recursividad en PHP

Buenas tardes,

Estoy empezando con PHP y no entiendo lo que es la recursividad en PHP. Entiendo que así se le llama a una función que se llama así misma, pero lo que no entiendo es la utilidad de esto (de que una función se llame así misma). Si podéis ponerme algún ejemplo y explicármelo como si fuera un bebé quien trata de entenderlo, os lo agradecería mucho.

Un saludo.
__________________
– You're on your own again.
  #2 (permalink)  
Antiguo 08/12/2011, 11:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recursividad en PHP

Imagina un árbol, que al llegar a una rama que contiene mas ramas necesitarías iterar así mismo sin duplicar tus funciones: eso es recursividad.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/12/2011, 11:29
 
Fecha de Ingreso: marzo-2003
Ubicación: Gandia, Valencia, España
Mensajes: 55
Antigüedad: 21 años, 1 mes
Puntos: 3
Respuesta: Recursividad en PHP

Pues imaginate una tienda. Las categorías no tienen una "profundidad" determinada, puedes encontrarte con una categoria con sub sub sub categorias y otra que no tenga.

Otro ejemplo

Foros del Web » Programación para sitios web » PHP » Recursividad en PHP

Aquí tenemos 2 niveles,

Pero en

Foros del Web » Diseño de Sitios web » PHP » Aplicaciones prefabricadas » Drupal » Actualizar sólo una parte

Tenemos 5. En ambos casos, hay que recorrer recursivamente hasta completar la ruta completa
__________________
Sueño luego existo
  #4 (permalink)  
Antiguo 08/12/2011, 11:32
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Recursividad en PHP

De forma recursiva se definen muchos algoritmos, que por ser recursivos son ridículamente simples.
En la realidad, a veces los métodos recursivos pueden consumir más recursos que sus equivalentes iterativos, pero ciertamente son más simples.

Los ejemplos clásicos son el cálculo de factorial(n) y la serie de fibonacci:

Código PHP:
Ver original
  1. function factorial($n) {
  2.     if ($n < 2) {
  3.         return 1;
  4.     } else {
  5.         return $n * factorial($n -1);
  6.     }
  7. }

Código PHP:
Ver original
  1. function fibonacci($n) {
  2.     if ($n <= 2) {
  3.         return 1;
  4.     } else {
  5.         return fibonacci($n - 1) + fibonacci($n - 2);
  6.     }
  7. }


saludos.
  #5 (permalink)  
Antiguo 08/12/2011, 12:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 4 meses
Puntos: 9
Respuesta: Recursividad en PHP

Gracias por vuestras respuestas, no consigo aclararme del todo. ¿Qué parte del código es en la que la función se llama a sí misma? ¿cómo se traduce en código esa recursividad? Y ¿para qué se hace, para tener una ruta absoluta de referencia?
__________________
– You're on your own again.
  #6 (permalink)  
Antiguo 08/12/2011, 12:44
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Recursividad en PHP

La recursividad se usa cuando la necesitas, y esto puede ser en las más diversas situaciones. No obstante si no comprendes bien las bases de qué es una función y cómo llamarla te será muy complicado comprender la recursividad.

A grandes rasgos es muy útil cuando desconoces las dimensiones de un objeto, usualmente una matriz de datos, y necesitas recorrerlo, al desconocer sus dimensiones, no puedes usar un simple for para recorrerlo, incluso un foreach es insuficiente ante matrices multidimensionales que no conoces sus dimensiones.
  #7 (permalink)  
Antiguo 08/12/2011, 12:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Recursividad en PHP

Por lo general la recursividad se usa mucho en array. Imagínate que tienes un array multiple, algo como
Código PHP:
Ver original
  1.     array(
  2.         array(
  3.             'foo',
  4.             'bar'
  5.         )
  6.     )
  7. )
¿Cómo logro el llegar al ultimo valor dinámicamente? Pues con recursividad lo puedes lograr, algo como
Código PHP:
Ver original
  1. <?php
  2. $arrays = array(
  3.     array(
  4.         array(
  5.             'foo',
  6.             'bar'
  7.         )
  8.     )
  9. );
  10.  
  11. function recursiveArray($array)
  12. {
  13.     foreach($array as $v){
  14.         if(is_array($v)){
  15.             recursiveArray($v);
  16.         }else{
  17.             echo $v . '<br />';
  18.         }
  19.     }
  20. }
  21. recursiveArray($arrays);
Primero recorremos el array con foreach, luego dentro verificamos si es otro array, si es así entonces ese valor lo colocamos nuevamente en la función que se llama a sí mismo para que vuelva a recorrer el siguiente valor que es un array y si no es un array entonces que coloque el valor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 08/12/2011, 13:21
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Recursividad en PHP

ya que te dieron muchos ejemplos, para que necesitas la recursividad?
hay vi que te pusieron el ejemplo del array, pero podria ser un xml, una query de sql, de un directorio de carpeta y archivos y etc. etc. etc.

cual es tu problema he-men?
  #9 (permalink)  
Antiguo 08/12/2011, 13:50
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 3 meses
Puntos: 19
Respuesta: Recursividad en PHP

En realidad pocas veces vas a usar recursividad, a no ser que estés desarollando un programa, que como bien te han comentado, necesite recorrer una serie de carpetas y archivos que se encuentren unas dentro de otras.

Mirate este video y comprenderás de una manera simple, para que sirve la recursividad y cómo se hace una función recursiva:
http://www.youtube.com/watch?v=KT5XFnT510c
http://www.youtube.com/watch?v=2O75l...eature=related
http://www.youtube.com/watch?v=NZ1qJ...eature=related

Esto es saber explicar, y no lo que hace la mayoría de la gente, profesores y libros.
  #10 (permalink)  
Antiguo 08/12/2011, 14:05
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recursividad en PHP

mi primer algoritmo recursivo, lo hice en turbo pascal y consistía en colocar 8 reinas en un tablero de ajedrez y que no se pudieran comer las unas a las otras, claro fue un reto del profe (epic wins para mí ).

Recursividad en realidad no es un tema complejo, el caso más común es el de los árboles como te cuentan: árbol de directorios, DOM, categorias de categorias, etc.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #11 (permalink)  
Antiguo 08/12/2011, 20:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 16 años
Puntos: 14
Respuesta: Recursividad en PHP

Recursividad es un concepto no de PHP, sino de cualquier lenguaje de programación. Su complejidad reside en que es una idea "antinatural", no estás acostumbrado a pensar recursivamente.

Un ejemplo tonto: Quiero saludar 8 veces "Hola".

Código:
function saluda($cantidad) {

 echo "Hola!";

 if($cantidad<7){
  saluda($cantidad+1);
 }

}

saluda(0);
Es un ejemplo idiota, sí, pero así te haces a la idea. En general (y creo no equivocarme) siempre hay una forma de hacer lo que se podría hacer con recursividad, sin ella. Pero con recursividad ahorras código, que es uno de los 10 mandamientos del buen programador :)
  #12 (permalink)  
Antiguo 09/12/2011, 08:09
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Recursividad en PHP

y cuales son los otros 9 mandamientos?
  #13 (permalink)  
Antiguo 09/12/2011, 08:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 16 años
Puntos: 14
Respuesta: Recursividad en PHP

Era una broma, por Dios... xDDDD
http://es.wikipedia.org/wiki/Diez_Mandamientos
  #14 (permalink)  
Antiguo 09/12/2011, 08:30
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Recursividad en PHP

y los del buen programador cuales son que nos los veo....
  #15 (permalink)  
Antiguo 09/12/2011, 10:52
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Recursividad en PHP

miren esto a ver: http://netadictos.weblog.discapnet.e...ookieSupport=1

Etiquetas: recursividad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:02.