本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。
一、什么是阶乘
阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = 120,符号“!”即阶乘。
计算阶乘常用于概率、组合等数学问题中。
二、Python实现计算阶乘
def fact(n): if n == 0: return 1 else: return n * fact(n-1)
上述代码使用Python定义了一个计算阶乘的函数fact(n)。
函数实现思路:当n等于0时,返回1;否则,返回n乘以(n-1)的阶乘。
调用该函数计算5的阶乘:
result = fact(5) print(result)
输出结果为:120。
三、递归函数的性能问题
上述代码使用了递归实现,递归用起来简洁明了,但递归调用过程中会开辟多层栈,消耗大量内存。在计算较大数字的阶乘时,会导致栈溢出。
因此,对于计算较大数的阶乘,建议使用循环方式实现,如下所示:
def fact(n): result = 1 for i in range(1, n+1): result *= i return result
与递归方式相比,循环方式消耗的内存更少,计算速度更快,更为可靠。
四、思考题
除了使用循环方式外,您是否有其他实现计算阶乘的方法?请分享您的思路和代码。