La fonction Factorielle pour en Python
Comment puis-je aller sur le calcul d'une factorielle d'un entier en Python?
Vous devez vous connecter pour publier un commentaire.
Comment puis-je aller sur le calcul d'une factorielle d'un entier en Python?
Vous devez vous connecter pour publier un commentaire.
Façon la plus simple: les mathématiques.factorielle(x) (disponible en 2.6 et ci-dessus).
Si vous voulez/devez écrire vous-même, utilisez quelque chose comme
ou quelque chose de plus lisible:
Comme toujours, Google est votre ami 😉
[1]
à larange
,range
est ok sans la liste, et vous devez tenir compte de 0! cas. Donc, mon édition de votre solution estdef fact(n): return n==0 and 1 or reduce(lambda x, y: x*y, range(1, n+1))
factorial
dans lefactorial
fonction. Comment pouvez-vous utiliser la même fonction au sein de la fonction vous êtes en train de définir? Je suis nouveau sur Python, donc je suis juste essayer de comprendre.factorial = (lambda ǀ:ǀ(ǀ))(lambda ǀ:lambda ǃ:ǃ and ǃ*ǀ(ǀ)(~-ǃ)or-~ǃ)
(Besoins Python 3; ne fonctionne pas avec Python 2. Qui a dit que obscurci Python n'est pas une chose?)list(range(1,n+1))
Sur la version 2.6 de Python et à la place, essayez de:
Pas vraiment nécessaire puisque c'est un ancien fil. Mais je l'ai fait ici est une autre façon de calculer la factorielle d'un entier en utilisant une boucle while.
Solution existante
Le plus court et probablement la solution la plus rapide est:
La construction de votre propre
Vous pouvez également créer votre propre solution. Généralement, vous avez deux approches. Celui qui me convient le mieux est:
(cela marche aussi pour les grands nombres, alors que le résultat devient
long
)Le second moyen d'atteindre le même:
TypeError: reduce() of empty sequence with no initial value
" sans faire de gros changements.Si vous utilisez Python2.5 ou plus, essayez
pour les nouveaux Python, il n'y a factorielle dans le module math comme indiqué dans d'autres réponses ici
Juste une autre méthode pour le calcul de la factorielle à l'aide d'une boucle for -
http://www.google.com/search?aq=0&oq=factorial+py&sourceid=chrome&ie=UTF-8&q=factorial+python
Pour des raisons de performance, s'il vous plaît ne pas utiliser la récursivité. Il serait désastreux.
De contrôle en utilisant les résultats
À l'aide de la pile est pratique(comme l'appel récursif), mais il a un coût: le stockage de l'information détaillée peut prendre beaucoup de mémoire.
Si la pile est élevée, cela signifie que l'ordinateur stocke beaucoup d'informations sur les appels de fonction.
La méthode ne prend constamment la mémoire(comme l'itération).
Ou à l'Aide de la boucle
De contrôle en utilisant les résultats
Ou d'Utiliser builtin fonction de mathématiques
De contrôle en utilisant les résultats
Vous dire:
Je sais que cela a été répondu, mais voici une autre méthode avec une inversion de gamme compréhension de liste, la plus facile à lire et plus compact:
Vous pouvez le voir une version complète du code à l'intérieur de ce gist: https://gist.github.com/sadmicrowave/d4fbefc124eb69027d7a3131526e8c06
Voici ma essayer
Une ligne, rapide et un grand nombre travaille aussi:
Beaucoup de ces méthodes sont très bons, mais je dirais que votre meilleur pari est de toujours utiliser le construit en fonction. Toutefois, il existe quelques très facilement réalisable par vous-même si vous voulez voir ce qui se passe. Vite, je suis venu avec est le même que beaucoup d'entre eux ici.
C'est plutôt efficace du code, l'avantage étant qu'une liste est créée si vous wan pas à manipuler des données dans la liste même si je ne suis pas sûr pourquoi vous voulez vraiment.
Edit: juste vu que j'ai posté sur une vieille chose. Désolé.
xrange
pour python 2, etrange
pour python 3 - depuis une personne pourrait prendrerange
en python 2, qui serait inefficace