我在Python中定义了一个函数,使用基本的n
循环来计算for
的{{3}}:
def dFactorial(n):
sum = n
for i in range(n):
if (n - i) % 2 == 0:
sum *= i
return sum
当我输入数字10
时,它会返回0
。但是,对于我测试的所有其他值(甚至不是),它似乎工作正常。
我的定义是否有错误?这对我来说似乎合乎逻辑;对于所有值{1..n}
,如果它与n
共享double factorial,则应用该产品。
我在Python 2.7.5
上使用Fedora 20
。
答案 0 :(得分:0)
尝试此代码,这适用于偶数和奇数
def doublefactorial(n):
if n <= 0:
return 1
else:
return n * doublefactorial(n-2)
答案 1 :(得分:0)
我认为你所寻找的是这样的。
def dFactorial(n):
sum = 1
#range will start with 1 for odd 2 for even
for i in range(n % 2 or 2, n+1, 2):
sum *= i
return sum
答案 2 :(得分:0)
您需要检查乘法乘以0.
def dFactorial(n):
sum = n
for i in range(n):
if ((n - i) % 2 == 0):
if(i != 0):
sum *= i
return sum
答案 3 :(得分:0)
感谢您的所有解决方案。为了遵守原始问题的性质,我将应用@user3467349
建议的小改动:
def dFactorial(n):
sum = n
for i in range(1, n):
if (n - i) % 2 == 0:
sum *= i
return sum
答案 4 :(得分:-1)
偶:
def dEvenFactorial(n):
sum = 1
i = 2
while i<=n/2
sum*=2*i
return sum
奇:
def dOddFactorial(n):
sum = 1
i = 2
while i<=(n/+1)/2
sum*=2*i-1
return sum