function recursive

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : function recursive

par zeus » 18 sept. 2007, 12:37

arf ... me suis fait embrouiller par la portée sur ce coup ...
$nombre=0;
toto($nombre++); // eq. toto(0)
mais
$nombre=0;
toto(++$nombre); // eq. toto(1)

Re: function recursive

par AB » 18 sept. 2007, 11:54

Arrêtez moi si je débloque, mais
$nombre=0;
toto($nombre++); // eq. toto(1)
et
$nombre=0;
$nombre++;
toto($nombre); // eq. toto(1) aussi
On ne parle pas de portée puisque c'est uniquement lors du passage de la valeur à la fonction que la nouvelle valeur nous intéresse :-k

J'ai raté quelque chose ?
Je sais pas peut-être la pluie...
$a = 1;
$b = $a++;
echo $b;
//affiche 1

Re: function recursive

par zeus » 18 sept. 2007, 09:51

Arrêtez moi si je débloque, mais
$nombre=0;
toto($nombre++); // eq. toto(1)
et
$nombre=0;
$nombre++;
toto($nombre); // eq. toto(1) aussi
On ne parle pas de portée puisque c'est uniquement lors du passage de la valeur à la fonction que la nouvelle valeur nous intéresse :-k

J'ai raté quelque chose ?

par fab » 18 sept. 2007, 09:38

/me devient aveugle :'(

ok

par Lxandre » 18 sept. 2007, 09:25

Voila, merci pour ta réponse.

Re: function recursive

par Hubert Roksor » 17 sept. 2007, 20:37

Lxandre : merci de poster dans le bon forum à l'avenir, ce type de questions appartient au forum Débuter en PHP.

Quant à ta question "pourquoi ma fonction ne renvoit-elle rien ?", la réponse est simple : parce que la fonction ne renvoit rien. Si tu n'utilises pas "return", une fonction ne renvoit aucune valeur. Dans ton exemple, si $nombre est égal ou supérieur à 10 la fonction renvoit $nombre, sinon la fonction ne renvoit rien. Par conséquent, la fonction devrait ressembler à
function toto($nombre)
{
	if ($nombre < 10)
	{
		return toto($nombre + 1);		
	}
	else
	{
		return $nombre;
	}
}
De plus, n'oublie pas que les variables d'une fonction sont réinitialisées à chaque appel, les variables ne sont pas "partagées" d'un appel à l'autre. Les modifications apportées à $nombre n'ont aucune incidence en dehors de l'exécution en cours.

oui

par Lxandre » 17 sept. 2007, 18:44

le problème c'est que ca n'affiche rien !!
En gros, afficher le resultat dans la fonction, ca marche !
afficher le resultalt de la fonction marche pas !

par fab » 17 sept. 2007, 17:49

Normalement on fait comme ça :
echo toto(0);

pareil

par Lxandre » 17 sept. 2007, 17:47

Ca ne fontionne pas ! :(

par fab » 17 sept. 2007, 17:15

essaye
echo ($tutu = toto(0)); 

function recursive

par Lxandre » 17 sept. 2007, 17:11

Bonjour.
j'ai remarqué que les fontions récursivent ne renvoient pas lé résultat.
exemple :
function toto($nombre)
{
	if($nombre<10)
	{
		$nombre++;
		toto($nombre);		
	}
	else
	{
		
		//echo $nombre;
		return $nombre;
	}

}
echo $tutu =  toto(0);
chose curieuse, si j'affiche le resultat de ma fonction c-a-d $tutu. RIEN !
Pourtant si je décomente echo $nombre, la fonction affiche bien le bon résultat...


:?