function my_pow($n)
{
if($p==0)
{
return(1);
}
return(my_pow($n, $p-1)*$n);
}
Comme je n'y connais rien en PHP, je m'interroge sur l'homogénéité de
my_pow($n) //un seul paramètre
//...
return(my_pow($n, $p-1)*$n) //2 paramètres
C'est possible en PHP ça ?
Ou s'agit il d'une coquille à corriger? Ce serait plutôt ce qui ressort plutôt des premiers commentaires, mais celui de demicerveau semble dire le contraire.
KX
Messages postés16726Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention 9 novembre 2023126 Modifié le 27 juil. 2017 à 15:42
Bonjour,
Je ne connais pas PHP non plus, mais en toute logique je dirais qu'il faudrait écrire
function my_pow($n, $p)
sinon on ne sait pas d'où sort
$p
qui a ici un rôle d'exposant pour le calcul de
n^p
...
La confiance n'exclut pas le contrôle
KX
Messages postés16726Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention 9 novembre 2023126 27 juil. 2017 à 15:48
Au passage, je signales qu'il y a plus performant pour le calcul de la puissance... du coup je ne suis pas sûr de l'intérêt de ce tutoriel.
p^(2k)=(p^k)*(p^k)
ce qui permet d'avoir une complexité logarithmique au lieu d'une complexité linéaire...
Whismeril
Messages postés18783Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention28 novembre 2023645 27 juil. 2017 à 15:56
Salut, je pense que son idée de départ était de trouver un exemple de récursivité simple à montrer.
Et comme toi je me demande d'où sort $p.
Mais ce qui m'a le plus interpelé c'est le commentaire de demicerveau qui dit que cela est possible avec de code exact si $p est une variable static.
D'où ma question ici.
KX
Messages postés16726Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention 9 novembre 2023126
>
Whismeril
Messages postés18783Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention28 novembre 2023 27 juil. 2017 à 16:05
Le commentaire ne tient pas la route, dès lors que tu passes à l'appel récursif il est nécessaire que la valeur de $p ait changée et la fonction ne fait pas le changement de valeur d'une éventuelle variable $p statique ou autre, elle ne fait que appeler récursivement la fonction en lui passant un deuxième paramètre qu'elle ne gère pas en l'état.
De plus passer par une variable statique ce serait vraiment moche si elle doit être partagée par tous les calculs qui appellent la fonction (en particulier les appels récursifs suivants) quand on sait que lors du dépilement des instructions de l'appel récursif la résolution du calcul va se faire dans l'ordre inverse des appels...
Non, il manque juste un paramètre dans la déclaration de la fonction ;-)
NB. Dans un bon tutoriel sur la récursivité, il serait utile de parler de récursion terminale ce qui permet d'éviter l'usage de la pile... là on est au niveau d'une snippet de débutant.
Whismeril
Messages postés18783Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention28 novembre 2023645
>
KX
Messages postés16726Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention 9 novembre 2023 27 juil. 2017 à 16:13
C'est exact, coquille à corriger donc.
Pour le niveau débutant, je suis d'accord avec toi.
27 juil. 2017 à 15:48
ce qui permet d'avoir une complexité logarithmique au lieu d'une complexité linéaire...
27 juil. 2017 à 15:56
Et comme toi je me demande d'où sort $p.
Mais ce qui m'a le plus interpelé c'est le commentaire de demicerveau qui dit que cela est possible avec de code exact si $p est une variable static.
D'où ma question ici.
27 juil. 2017 à 16:05
De plus passer par une variable statique ce serait vraiment moche si elle doit être partagée par tous les calculs qui appellent la fonction (en particulier les appels récursifs suivants) quand on sait que lors du dépilement des instructions de l'appel récursif la résolution du calcul va se faire dans l'ordre inverse des appels...
Non, il manque juste un paramètre dans la déclaration de la fonction ;-)
NB. Dans un bon tutoriel sur la récursivité, il serait utile de parler de récursion terminale ce qui permet d'éviter l'usage de la pile... là on est au niveau d'une snippet de débutant.
27 juil. 2017 à 16:13
Pour le niveau débutant, je suis d'accord avec toi.