Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Factorielle

Posté par
tournaud
04-03-19 à 20:06

Bonjour de l'aide svp
On me demande d'ecrire un programme en python qui calcule la factorielle d'un entier naturel .Et on me dit que j'ai pas le droit d'utilser une fonction,ni les opérateurs multiplication, puissances

Je sais le faire mais j'utilise la boucle while mais à l'intérieur de la boucle while il y'a l'operateur multiplier .

Merci d'avance

Posté par
carita
re : Factorielle 04-03-19 à 21:14

bonsoir

je ne pourrais pas t'aider pour programmer en python,
mais une idée peut-être pour ton algo : remplacer la multiplication par des additions.

ex :
3! = 2*3 = 3+3

4! = 2*3*4 = (3+3) + (3+3) + (3+3) + (3+3)
... ou encore 4! = 3! * 4

Posté par
carita
re : Factorielle 04-03-19 à 21:16

ou 4! = 4+4+4+4+4+4  (6 fois)
à voir
je réfléchis de mon coté.

Posté par
carita
re : Factorielle 04-03-19 à 21:30

bon, ça marche, peut-être il y a plus simple.
je suis partie sur n! = (n-1)! * n

avec 2 boucles FOR imbriquées, ça marche (algobox).

Posté par
flight
re : Factorielle 04-03-19 à 21:56

salut
grosso modo :
fixer n à 1
faire
n=n*i
i=i+1
jusqu'a que i = ...la valeur que tu veux +1
retourner la valeur de n

Posté par
flight
re : Factorielle 04-03-19 à 21:57

j'ai oublié : fixer i a 1

Posté par
carita
re : Factorielle 04-03-19 à 23:00

salut flight
pas le droit d'utiliser la multiplication.

Posté par
tournaud
re : Factorielle 04-03-19 à 23:31

Merci beaucoup carita , je réfléchi à comment écrire ça en langage python

Posté par
flight
re : Factorielle 05-03-19 à 09:14

puisque la solution est trouvée, je fourni la mienne en langage vba excel

sub factorielle()

k = 1
v = 1
entier = InputBox("saisir un entier")
If Val(entier) = 0 Then
MsgBox 1
Else
Do
u = 0
For i = 1 To k
u = u + v
Next
v = u
k = k + 1
Loop Until k = Val(entier) + 1
MsgBox u
End If
End Sub

Posté par
mathafou Moderateur
re : Factorielle 05-03-19 à 13:26

Bonjour,

on demande un programme, ... qui peut inclure plusieurs sous programmes

rien n'interdit donc de définir un sous programme "mult" par
def mult(a, b) :
ici rien que des additions pour effectuer la multiplication de a par b
return le résultat de cette multiplication

sous programme mult qui sera appelé au sein du sous programme fact(n) qui serait écrit "normalement" sans acrobaties d'additions, en faisant appel au sous programme mult() pour faire ses multiplications.

Posté par
mathafou Moderateur
re : Factorielle 05-03-19 à 13:52

oups, j'ai pas lu "pas droit d'utiliser une fonction"

Posté par
tournaud
re : Factorielle 05-03-19 à 15:01

😄😄oui pas le droit d'utiliser une fonction



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !