Python:双因子函数对偶数函数不起作用

时间:2015-02-21 13:36:29

标签: python

我在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

5 个答案:

答案 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