Python
2使用朴素的阶乘算法:
1121 for (i=1 ; i<=x ; i++) {1122 iobj = (PyObject *)PyInt_FromLong(i);1123 if (iobj == NULL)1124 goto error;1125 newresult = PyNumber_Multiply(result, iobj);1126 Py_DECREF(iobj);1127 if (newresult == NULL)1128 goto error;1129 Py_DECREF(result);1130 result = newresult;1131 }Python
3使用分治法阶乘算法:
1229 * factorial(n)的形式为2 ** k * m,m为奇数。k和m是1230 *单独计算,然后使用左移组合。
有关讨论,请参见Python Bugtracker问题。感谢DSM指出这一点。



