如何在Python中计算双阶乘?

7

我在这个问题上卡了很长时间。我已经成功地完成了一个递归阶乘。

def factorial(n):
     if n == 0:
         return 1
     else:
         return n * factorial(n-1)

双阶乘

对于一个偶数n,其双阶乘是所有小于等于n的正偶数的积。对于一个奇数p,其双阶乘是所有小于等于p的正奇数的积。

如果n是偶数,则 n!! = n*(n - 2)*(n - 4)*(n - 6)* ... *4*2

如果p是奇数,则 p!! = p*(p - 2)*(p - 4)*(p - 6)* ... *3*1

但我不知道如何计算双阶乘。有什么帮助吗?


看一下这两者之间的变化:n-1 变成了 n-2,而最终数字(基本情况)从 0 变成了 2 或 1 中的一个。 - moinudin
11个回答

0
我遇到了同样的问题,我决定这样做:
def double_factorial(N):
if N == 0: return 1
elif N == 1: return 1
elif N == 2: return 2
else:
    return N * double_factorial(N - 2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接