Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/04/2009, 16:31
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Duda con recursividad en PHP

Con objetos es un poco más complicado, esto es porque dependiendo de tu versión de PHP, puedes pasar un objeto por valor o por referencia, cuando tu haces un return de una variable normal pasas el valor de tu variable, y en un objeto puedes pasar la referencia.

Todo depende de lo que necesites hacer ya que por ejemplo usando un objeto:
Código php:
Ver original
  1. <?php
  2. function factorial($objeto) {
  3.     if ($objeto->factorial ==0) {
  4.         $objeto->factorial = 1;
  5.         return;
  6.     } else {
  7.         $aux = new StdClass();
  8.         $aux->factorial = $objeto->factorial - 1;
  9.         factorial($aux);
  10.         $objeto->factorial = $objeto->factorial * $aux->factorial;
  11.         return;
  12.     }
  13. }
  14. $obj = new StdClass();
  15. $obj->factorial = 7;
  16. factorial($obj);
  17. printf( "el factorial de 7 es %s<br>", $obj->factorial );
  18. ?>

No, aunque depures, $n, siempre trae el valor que le envia la función, por eso es una variable local, esta se va guardando y va almacenando, ve el ejemplo que te dejo Avatar810, es muy claro, conforme se va anidando la función va creando valores, pero estos son locales a la función, no se comparte ni es la misma variable.

Saludos.