Factorielle
Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 11:34
bonjour voila je cherche a faire un algo et je cherche des formule pour la factorielle a mettre dedans mais tt simple j'en et trouver une mais il m'en faut une autre solution pouvais vous m'aider
je vous met le code et vous entoure la formule que j'ai trouver (c'est la qu'il faut que je remplace ma formule
var
f : entier
i : entier
n : réel
début
afficher ("entrer n")
saisir (n)
f <- 1
i <- 1
tant que i < n faire
f = f * i
i = i + 1
i<- i+1
ftant
affichage ("n! : ", f)
fin
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 03 Jan 2009, 11:36
Tu veux calculer la factorielle d'un nombre entier ? Parce que le plus connu c'est l'algo récursif :)
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 11:48
oui d'un nombre entier
de deux manniere la celle que j'ai mis c'est la 1 mais je trouve pas l'autre j'ai chercher sur wiki il me donne des formule mais comme tu le sait lol les math c'est pas mon fort
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 03 Jan 2009, 11:54
Il y a la version récursive et l'itérative ^^
L'itérative (que tu as fait) ça donnerai :
function (n : entier)
f : entier // factorielle
f = 1
while (n>0) {
f <- n*f
n <- n-1 }
return f
end
En récursif c'est + simple :
function (n)
if ( n = 0 )
return 1
else
return n*function (n-1)
end
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 12:02
pour la deuxième en fait ta fait n*i * (n-1)
dans mon cas (i= nombre de passage)
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 03 Jan 2009, 12:03
Non ^^ essaye de l'écrire tu verras ;)
Prends n = 3 et fais marcher mon programme :)
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 12:08
non mais c'est ta fonction que je comprend pas j'ai pas encore vu les fonction a la rentrer normalement je c'est pas trop comment sa marche
je doit le faire en boucle le plus simplement possible lol
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 03 Jan 2009, 12:10
Pourquoi tu veux faire un algo sans avoir vu le cours... les gens m'épatent parfois !
-
_-Gaara-_
- Membre Complexe
- Messages: 2813
- Enregistré le: 03 Nov 2007, 14:34
-
par _-Gaara-_ » 03 Jan 2009, 12:20
prendre de l'avance ? :happy3:
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 03 Jan 2009, 12:21
Oui mais prendre de l'avance sans rien maitriser... Je veux dire s'il ne sait pas faire une fonction ça sert à rien de "demander des fonctions réalisant la factorielle" :)
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 03 Jan 2009, 12:25
Salut,
tant que i < n faire
f = f * i
i = i + 1
Tu remplaces par
pour i=1 a n faire
f = f * i
i = i + 1
ou bien l'autre boucle restante :
faire
f = f * i
i = i + 1
tant que i
Je pense pas qu'il s'agisse de la formule a changer, mais plutot du code.
Ou alors, ils veulent que tu te tapes la fonction gamma, mais ca m'étonnerait. Au moins pour les arrondis...
la vie est une fête

-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 14:24
merci pour ta réponse en faite il veulent que je fasse une boucle avec tant que c'est pour ça on a pas encore vu les pour c'est pour ca merci pour votre aide je vais ésséyer de trouver la solution toute seule je ne veut pas que vous vous énerviez a cause de moi dsl
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 03 Jan 2009, 14:30
Euh j'ai rien compris !
while = tant que
cf mon algo ;)
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 14:41
oups dsl oui while = tant que c'est du vb dsl
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 14:45
bon bah c'est bon j'ai mes deux méthode
la mienne qui marche
et la tienne c'est la méme chose mais bon la prof a dit deux méthode pas deux fonction lol sa irra merci bcp
Sub Main()
Dim n As Integer
Dim i As Integer
Dim f As Single
n = InputBox("entrer nombre")
f = 1
i = 1
While (n > 0)
f = n * f
n = n - 1
Wend
MsgBox ("le factoriel est " & f)
End Sub
-
sable27
- Membre Naturel
- Messages: 32
- Enregistré le: 02 Jan 2009, 16:27
-
par sable27 » 03 Jan 2009, 14:47
sinon on ma donner un truc comme sa mais je c'est pas si c'est bon j'arrive pas a le faire marcher lol
f = (f * i) * (n+1)
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 35 invités