答案 0 :(得分:1)
请删除代码中的第2行:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
n = input("enter the number")#python 2.x
n = int(input("enter the number"))#python 3.x
print(factorial(n))
答案 1 :(得分:0)
您可以在python中使用数学库。
import math
def factorial():
n= int(input("enter a number"))
print("Factorial of number ", math.factorial(n))
factorial()
或
def factorial():
n = int(input("enter a number:"))
factorial = 1
if n == 0:
print("The factorial of 0 is 1")
else:
for i in range(1,n + 1):
factorial = factorial*i
print("The factorial of number:",factorial)
您还可以添加一个小于0的数字检查并使用elif。
或者,
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
n = int(input("enter the number"))
print(factorial(n))
默认输入为字符串,您需要将其转换为int
答案 2 :(得分:0)
您试图在循环中实现递归,其中输入始终由用户提供。这将导致您的递归设置与预期的行为有所不同。相反,您可以按以下步骤实现它
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
n = int(input("enter the number"))# for python3.x
print(factorial(n))
现在n = input("enter the number")
在递归循环之外,它仅被调用一次,并且在递归过程中不会从外部更新n。
答案 3 :(得分:0)
import math
print(math.factorial(int(input("enter the number"))))
答案 4 :(得分:0)
通过:
num=int(input("Enter The Number to show it factorial:"))
fact=1
for x in range(1,num+1):
fact*=x
print("the factorial of this number is({})".format(fact))
同时:
n=int(input("Enter The Number:"))
x=1
fact=1
while(x<=n):
fact*=x
x+=1
print(fact)