Foros del Web » Programando para Internet » PHP »

Llamar a una funcion desde dentro de si misma

Estas en el tema de Llamar a una funcion desde dentro de si misma en el foro de PHP en Foros del Web. Estoy haciendo unos ejercicios, y no entiendo muy bien que está ocurriendo en este código Cita: function myFunc($n){ $i=1; $x=0; if($n<1){ echo $x.'*'.$i.'*'.$n.'<br/>'; return 0; ...
  #1 (permalink)  
Antiguo 22/07/2013, 06:32
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Llamar a una funcion desde dentro de si misma

Estoy haciendo unos ejercicios, y no entiendo muy bien que está ocurriendo en este código
Cita:
function myFunc($n){
$i=1;
$x=0;
if($n<1){
echo $x.'*'.$i.'*'.$n.'<br/>';
return 0;
}else{
while($i<=$n){
$i=$i*10;
}
$i=$i/10;
$x=$n%100;
}
echo '<br/>'.$x.'-'.$i.'-'.$n;

return ($x+$i+myFunc($n/10));
}

echo myfunc(86403);



antes del primer return ($x+$i+myFunc($n/10)); los valores de x i n son 3-10000-86403

a partir de ahi no entiendo muy bien como trabaja php... ni que se envia en esa llamada ya que se está metiendo la funcion... se queda en pause hasta obtener el resultado de la funcion antes de la llamada y va generando uno sobre otro hasta que los tiene todos y luego vuelve hacia atras trayendo resultados?
  #2 (permalink)  
Antiguo 22/07/2013, 06:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Llamar a una funcion desde dentro de si misma

echo myfunc(86403);

Ojo que php es casesensitive luego myfunc != myFunc

No tiene tanto truco el tema... la función se auto llama hasta que $n es mas pequeño que 1 en ese momento retorna 0, o falso segun lo mires....



3-10000-86403
40.29999999999927-1000-8640.3
64.02999999999997-100-864.03
86.40299999999999-10-86.40299999999999
8.6403-1-8.64030*1*0.86403


Pasada a javascript


Código Javascript:
Ver original
  1. function myFunc(n){
  2.    var i=1;
  3.    var x=0;
  4.    if(n<1){
  5.       document.write(x + '*' + i + '*' + n +'<br/>');
  6.       return 0;
  7.    }else{
  8.       while(i<=n){
  9.           i=i*10;
  10.       }
  11.       i=i/10;
  12.       x=n%100;
  13.    }
  14. document.write('<br/>'+x+'-'+i+'-'+n);
  15. return (x+i+myFunc(n/10));
  16. }

return ($x+$i+myFunc($n/10));

la función se ejecuta con $n/10 en las sucesivas vueltas de recursivas.... excepto que recojas ese ultimo retur esa suma no la ves por ninguna parte....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 22/07/2013 a las 07:02

Etiquetas: funcion
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 19:38.