Python:factorial的打印行*&引用;通过递归

Python:factorial的打印行*&引用;通过递归,python,list,recursion,factorial,Python,List,Recursion,Factorial,我已经实现了一个函数,通过使用递归生成一个列表来计算从1到n(其中n是用户输入)的阶乘。我想通过定义一个新函数,在主函数内部递归调用自己,为1到n范围内的每个整数k打印一行k阶乘星。如果n=3,输出应如下所示: * ** ****** 以下是我迄今为止使用递归计算阶乘的代码: #Ask the user to input a positive integer n n=int(input("Enter positive integer: ")) #Defining a function to

我已经实现了一个函数,通过使用递归生成一个列表来计算从1到n(其中n是用户输入)的阶乘。我想通过定义一个新函数,在主函数内部递归调用自己,为1到n范围内的每个整数k打印一行k阶乘星。如果n=3,输出应如下所示:

*
**
******
以下是我迄今为止使用递归计算阶乘的代码:

#Ask the user to input a positive integer n
n=int(input("Enter positive integer: "))

#Defining a function to calculate the factorial of a input number
def factorialN(n):

    #Defining the base case
    if n==1:

        #If it satisfy the base condition return a list containing 1
        return [1]

    #Calling the function factorialN() recursively
    list_1=factorialN(n-1)

    new_factorial=list_1[-1]*n

    list_1.append(new_factorial)

    return list_1

所以我很难实现打印阶乘星(“*”)的函数。非常感谢您的帮助,因为我是Python的初学者。提前感谢。

您编写的函数返回一个列表,其中包含哪一行应该有多少个'*'

对于
n=3
它返回:
[1,2,6]

因此,要打印它们:

for x in output:
    print('*'*x) # print * x times

我同意@Anonta的打印解决方案(+1),但如果您的唯一目标是打印星星,而不是将阶乘收集到列表中,那么您可以将打印合并到代码中并简化一切:

def factorialN(n):
    if n != 1:
        n *= factorialN(n - 1)

    print(n * '*')

    return n

number = int(input("Enter positive integer: "))

factorialN(number)
用法

Enter positive integer: 4
*
**
******
************************

另外,作为奖励,
factorialN(n)
以数字形式返回
n
的阶乘

你的代码怎么了?我在实现打印阶乘“*”的函数时遇到了问题@DYZ@eye具体是问题的哪一部分?您的代码甚至没有试图打印一个星号。在发布问题之前,请阅读。@eye尝试在返回的列表中按顺序迭代,并调用
print(“*”*k)
,其中
k
是列表中的任意值
“*”*k
在Python中是指
k
相互连接的
“*”
副本。