编辑:我知道我可以导入阶乘,但我这样做是为了练习
尝试使用Python中的函数获取给定数字的因子。
例如: factorial(4)= 4 * 3 * 2 * 1 = 24
def factorial(x):
n = x
while n >= 0:
x = n * (n - 1)
n -= 1
return x
答案 0 :(得分:4)
尝试这样:使代码正常工作
def factorial(x):
n = 1 # this will store the factorial value
while x > 0:
n = n*x
x -= 1
return n
你对评论提出了很多建议
答案 1 :(得分:1)
接近这个的好方法是使用函数调用自身的递归。见Function for Factorial in Python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
但是在你的情况下,你的return语句实际上会脱离while循环。因此,如果你传球5,那你得到20回来,这显然不是5! (5阶乘)。
相反,试试这个:
def factorial(x):
n = 1
while x > 1:
n *= x
x -= 1
return n
print (factorial(5))
但是要采用递归方式。
如果你真的想作弊尝试:
import math
math.factorial(n)
答案 2 :(得分:0)
我提出了一个更短的递归因子计算代码。不确定它是否比其他方法更快或更慢:
def fac(n):
return 1 if n==1 else n*fac(n-1)
fac(10)
3628800
答案 3 :(得分:0)
_start