====== Factorielle : travaux additionnels ====== Idées d'exercices complémentaires, d'applications. ===== Utilisation d'un dictionnaire ===== Il peut être intéressant de précalculer des factorielles qui seront mémorisées dans un dictionnaire. ===== Comparaison avec l'approximation de Stirling ===== Comparaison le logarithme de la factorielle de nombres d'ordres de grandeur différents et des approximation par la [[http://fr.wikipedia.org/wiki/Formule_de_Stirling|formule de Stirling]] : (plusieurs approximations de précisions différentes sont possibles) ===== Coefficients binomiaux ===== Calculer de diverses manières (et discuter de l'efficacité) les éléments du [[http://fr.wikipedia.org/wiki/Triangle_de_Pascal|triangle de Pascal]] (coefficients binomiaux). Optimiser pour réduire le nombre de multiplication, et surtout de divisions. ===== Comparaison des temps de calcul ===== La librairie [[http://docs.python.org/2/library/timeit.html|timeit]] mesure les temps d'exécution en évitant des biais tels que l'usage concomitant d'autres ressources. ===== Gestion des erreurs ===== Utilisation des exceptions, de "raise" if n < 0 : raise ValueError("Negative values are not allowed.") Références : * [[https://docs.python.org/2/library/exceptions.html]] * [[https://docs.python.org/2/reference/simple_stmts.html#the-raise-statement]] * [[http://www.tutorialspoint.com/python/python_exceptions.htm]] ===== Tests unitaires sur la fonction factorielle ===== //Cf.// [[http://pymbook.readthedocs.org/en/latest/testing.html]] ===== Quelques versions étranges ===== //Cf.// [[http://www.artima.com/forums/flat.jsp?forum=181&thread=75931]]