Bonjour
Je viens de débuter en javascript et je bute sur les fonctions. l'exercice et de créer une fonction récursive ( factoriel) et renvoyer le paramètre ainsi que le résultat de la fonction. Ainsi, La fonction Fact(5 ) doit renvoyer {5,120}
function factorial (n) {
if(n == 0) {
return 1
} else {
return{
val:n* factorial(n - 1),
Param:n
}
}
}
La fonction renvoie bien le param mais pour Val elle renvoie NaN
Merci d'avance
Fonction Récursive et Return objet
-
- Messages : 3
- Enregistré le : 07 mars 2020, 00:40
Re: Fonction Récursive et Return objet
Bonjour
Il y a une incohérence entre type de paramètre
Soit n est un entier, soit n est un objet avec 2 propriétés val et param
Comme param n'a pas d'interet (c'est la valeur de n en entrée), j'ai modifié la fonction :
Le code s'exécute ici :
https://www.toutjavascript.com/user/factorial.html
Il y a une incohérence entre type de paramètre
Soit n est un entier, soit n est un objet avec 2 propriétés val et param
Comme param n'a pas d'interet (c'est la valeur de n en entrée), j'ai modifié la fonction :
Code : Tout sélectionner
<script type="text/javascript">
function factorial(n) {
n=parseInt(n); /* pour s'assurer qu'on a bien un entier */
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
document.write("factorial(1)="+factorial(1)+"<br>"); // 1
document.write("factorial(5)="+factorial(5)+"<br>"); // 120
document.write("factorial(8)="+factorial(8)+"<br>"); // 40320
</script>
https://www.toutjavascript.com/user/factorial.html
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
-
- Messages : 3
- Enregistré le : 07 mars 2020, 00:40
Re: Fonction Récursive et Return objet
Merci infiniment pour votre réponse,
le problème est que je doit renvoyer à la fois le paramètre de la fonction et la valeur du factoriel.
le problème est que je doit renvoyer à la fois le paramètre de la fonction et la valeur du factoriel.
Re: Fonction Récursive et Return objet
C'est possible aussi :
Mais c'est vraiment très lourd car il faut passer le param initial de factoriel et transmettre un objet
Bref, c'est une solution que je ne préconise pas du tout
J'ai mis à jour la page d'exécution
https://www.toutjavascript.com/user/factorial.html
Code : Tout sélectionner
<script type="text/javascript">
function factorial(n) {
if (isFinite(n)) {
console.log(n+" isNumber");
n = { val: parseInt(n), Param: parseInt(n) };
}
if (n.val == 0) {
return {
val: 1,
Param: 0
};
} else {
return {
val: n.val * factorial({val: n.val - 1, Param: n.Param}).val,
Param: n.Param
};
}
}
document.write("factorial(0)="+JSON.stringify(factorial(0))+"<br>"); // 1
document.write("factorial(1)="+JSON.stringify(factorial(1))+"<br>"); // 1
document.write("factorial(5)="+JSON.stringify(factorial(5))+"<br>"); // 120
document.write("factorial(8)="+JSON.stringify(factorial(8))+"<br>"); // 40320
</script>
Bref, c'est une solution que je ne préconise pas du tout
J'ai mis à jour la page d'exécution
https://www.toutjavascript.com/user/factorial.html
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
-
- Messages : 3
- Enregistré le : 07 mars 2020, 00:40
Re: Fonction Récursive et Return objet
wow ça fonctionne 
merci, tant de chose à comprendre et apprendre, maintenant it's learning time
le plus important et de comprendre pourquoi ma fonction n'a pas marché, comment fonctionne la récursivité en javascript ....

merci, tant de chose à comprendre et apprendre, maintenant it's learning time
le plus important et de comprendre pourquoi ma fonction n'a pas marché, comment fonctionne la récursivité en javascript ....