📜  TCS编码实践问题|数字的阶乘(1)

📅  最后修改于: 2023-12-03 14:47:53.637000             🧑  作者: Mango

TCS编码实践问题 | 数字的阶乘

问题描述

给定一个正整数 n,计算 n! 的值。

解题思路

一般使用递归的方法求某个正整数的阶乘。递归公式为:n! = n * (n-1)!

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n-1)

但是,递归算法的时间复杂度为 O(n),如果 n 较大,则会出现栈溢出或超时的问题。因此,我们可以使用循环的方式来解决这个问题。

代码实现

以下是使用循环算法实现计算 n! 的 Python 代码片段。

def factorial(n):
    result = 1
    for i in range(2, n+1):
        result *= i
    return result
测试示例

以下是测试示例。

assert factorial(0) == 1
assert factorial(1) == 1
assert factorial(2) == 2
assert factorial(3) == 6
assert factorial(4) == 24
assert factorial(10) == 3628800
总结

本文介绍了使用递归和循环方式来实现计算 n! 的方法。在实际应用中,由于递归算法的时间复杂度较高,循环方式更推荐使用。