Python:factorial的打印行*&引用;通过递归
我已经实现了一个函数,通过使用递归生成一个列表来计算从1到n(其中n是用户输入)的阶乘。我想通过定义一个新函数,在主函数内部递归调用自己,为1到n范围内的每个整数k打印一行k阶乘星。如果n=3,输出应如下所示: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
*
**
******
以下是我迄今为止使用递归计算阶乘的代码:
#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
相互连接的“*”
副本。