Fonction factorielle en javascript

Le problème exposé dans ce sujet a été résolu.

Bonjour tout le monde,

Je précise que je suis vraiment débutant en JavaScript :)

Je fais des exercices pour me familiariser avec ce language et je bloque complètement sur l'un d'entre eux.

je veux afficher la factorielle d'un nombre rentré par l'utilisateur dans une boîte de dialogue mais je n'arrive absolument pas à traduire dans mon code le calcul d'une factorielle.

D'autres variantes plus simples passent sans problème mais là vraiment je ne sais pas quoi faire.

Est-ce que quelqu'un peut m'aiguiller?

merci beaucoup!

+0 -0

Il faut y aller petit à petit. Comment définis-tu la factorielle, en français ? À partir d'une phrase complète, identifie le code qui correspond aux différents morceaux. Ensuite, regarde comment ces morceaux s'emboîtent dans ton code.

Note qu'il y a plusieurs définitions possibles pour la factorielle, plus ou moins évidentes, et plus ou moins faciles à implémenter. C'est peut-être aussi ton problème.

Alors tout bêtement la factorielle de 5 c'est 1x2x3x4x5 Ma connaissance de la factorielle s'arrête clairement là ^^

C'est une définition suffisante, pas la peine de te préoccuper de récursivité pour l'instant.

Bref, la factorielle de 5, c'est le produit de tous les entiers de 1 à 5. En gros, deux informations ici : le produit, et tous les entiers de 1 à 5. Est-ce que tu sais représenter ces deux concepts en JavaScript, indépendamment ? Par exemple si le problème était "affichez tous les entiers de 1 à 5" tu saurais le faire ?

il y a plusieurs façon de la faire.

la façon la plus simple selon moi c'est avec une boucle while

tu demandes l'entré d'un nombre N et ensuite ta condition va être tant que N=0 alors tu continues. Ensuite dans ton while tu as simplement a avoir une variable en dehors du while qui va toujours faire un fois ton N. Par la suite, tu réduis ton N-1.

L'autre façon est avec la récursivité. Si tu veux en savoir plus dit moi le ici je vais expliquer ;)

Fait aussi attention le factorielle de 0 = 1 ;)

+0 -0

Bon en fait non je crois que je ne sais pas :-/

Voilà un exemple de ce que je sais faire Afficher le nombre de bonjour correspondant au nombre indiqué par l'utilisateur

var helloNumber = parseInt(prompt("choisissez un nombre entre 1 et 10")); var helloMessage = "Bonjour";

for (var i = 2; i <= helloNumber; i++) {

1
   helloMessage += " Bonjour";

}

alert(helloMessage);

ps: existe-t-il un meilleur moyen pour afficher du code?

+0 -0

tu utilises quel navigateur? il existe la console avec f12

et au lieu de mettre alert tu mets console.log(helloMessage);

et le console.log met le dans ton for à la place ;) et tu n'auras même pu besoin de ta variable helloMessage. tu auras qu'a mettre console.log("bonjour");

+0 -0

tu utilises quel navigateur? il existe la console avec f12

et au lieu de mettre alert tu mets console.log(helloMessage);

et le console.log met le dans ton for à la place ;) et tu n'auras même pu besoin de ta variable helloMessage. tu auras qu'a mettre console.log("bonjour");

MadaQC

oh merci!!

Salut,
Pour moi c'est tout bon. :)

Après, je te conseille d'utiliser console.log comme l'ont dit mes collègues du dessus, c'est 100 fois plus pratique que "alert". Tu peux aussi améliorer ton système avec les points suivants :

  • Renvoyer une erreur si la personne rentre un nombre négatif
  • Faire un petit message si l'utilisateur ne rentre pas un nombre entier, et lui permettre de rentrer un nouveau nombre
  • Plutôt que d'afficher le résultat dans la console, l'afficher directement sur la page HTML (ça demande un peu plus de connaissances mais c'est faisable)

Bonjour Melepe,

Merci pour tes conseils, Je vais rajouter la fonction et les messages d'erreur.

Je travaille très peu en console pour le moment et j'aimerais que cela s'affiche dans la page HTML mais impossible d'y arriver. Tu peux m'indiquer comment faire?

Yup,
Le moyen le plus simple, c'est d'utiliser la méthode innerHTML. Exemple d'application : tu as dans ton code le bout suivant : <p id="texteAEcrire"></p>. Tu vas pouvoir écrire dans ce paragraphe avec le Javascript suivant : document.getElementById('texteAEcrire').innerHTML('Du texte !'); document.getElementById('texteAEcrire').innerHTML = 'Du texte !';.

Comme tu peux le constater, JS va récupérer l'objet HTML qui a pour id "texteAEcrire". Avec la méthode innerHTML, tu lui dis… Bah, d'écrire du HTML :p (Ce qui veut dire entre autres que tu peux y ajouter du HTML, par exemple faire document.getElementById('texteAEcrire').innerHTML('<em>Du texte !</em>'); document.getElementById('texteAEcrire').innerHTML = '<em>Du texte !</em>';.

+0 -0

Salut,
Je viens de m'apercevoir que j'ai raconté un peu n'importe quoi cette aprèm-midi : innerHTML ne s'emploie pas du tout comme ça… Désolé.

Pour écrire du texte, c'est document.getElementById('monId').innerHTML = 'mon HTML', et pas autre chose.

Désolé pour le craquage complet.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte