在python中尝试将数字的阶乘打印为(5 x 4 x 3 x 2 x1=120)

在python中尝试将数字的阶乘打印为(5 x 4 x 3 x 2 x1=120),python,python-3.x,Python,Python 3.x,我试图通过如下方式使用递归打印数字的阶乘: 5 x 4 x 3 x 2 x 1=120 我只想要这个(5x4x3x2x1)零件。我正在尝试列表理解,但无法加入“x”符号 尝试: 输出: 5 X 4 X 3 X 2 X 1 = 120 .join()会有帮助 def factorial(n): if n==0 or n==1: return 1 else: return n*factorial(n-1) n=(i

我试图通过如下方式使用递归打印数字的阶乘:

5 x 4 x 3 x 2 x 1=120
我只想要这个
(5x4x3x2x1)
零件。我正在尝试列表理解,但无法加入“x”符号

尝试:

输出:

5 X 4 X 3 X 2 X 1 = 120
.join()
会有帮助

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

n=(int(input()))
list1=[str(i) for i in range(n,0,-1)]
print(" x ".join(list1),"=",factorial(n))

您正在寻找的是
加入
。如果您有一个字符串列表
integers=[“1”、“2”、“3”、“4”、“5”]
,则可以使用表达式
“X.join(integers)
获取字符串
“1 X 2 X 3 X 4 X 5”

要回答您的确切问题,请使用以下代码:

n=(int(input()))
print(" X ".join([str(i) for i in range(n,0,-1)]),"=",factorial(n))

请注意,
str(i)
部分,
join
不适用于整数列表

这里是一个可能的递归解决方案(只有一行,但需要Python 3.8+):

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

n=(int(input()))
list1=[str(i) for i in range(n,0,-1)]
print(" x ".join(list1),"=",factorial(n))
n=(int(input()))
print(" X ".join([str(i) for i in range(n,0,-1)]),"=",factorial(n))
print((f := lambda n: f'{n} x {f(n - 1)}' if n > 1 else n)(n), '=', factorial(n))