我希望通过以不同方式执行相同的代码来改进我的编码,这不仅是为了帮助我更好地编码,而且是为了理解不同人的代码和他们的编码风格。有人可以解释一下我如何能够纠正类似于下面在一行中发布的阶乘函数吗?也欢迎使用 lambda 函数。
def factorial(number):
fact = 1
for i in range(1, number + 1):
fact *= i
return fact
我知道我可以递归地写这个,但我选择不那样做。
请您参考如下方法:
这是我的单行解决方案,没有导入任何东西。
def factorial(n: int):
return n * factorial(n - 1) if n > 1 else 1
它递归直到输入数字为 1,最后返回结果(在 n=0 的情况下,它返回 1,因为 0!=1)。该解决方案还使用三元运算符将 if...else 放入一行。
请注意 python 具有最大递归,因此 factorial(x) 其中 x >= 999 将导致 RecursionError
