Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用递归为小于或等于n的所有正偶数整数的乘积生成阶乘函数_Python_Recursion_Factorial - Fatal编程技术网

如何在python中使用递归为小于或等于n的所有正偶数整数的乘积生成阶乘函数

如何在python中使用递归为小于或等于n的所有正偶数整数的乘积生成阶乘函数,python,recursion,factorial,Python,Recursion,Factorial,def阶乘(n): 我似乎无法解决这个问题。我可以找到偶数阶乘的偶数整数,但我似乎无法同时找到奇数阶乘的偶数整数。我已经做了好几天了。我对python非常陌生,因此任何帮助都将非常感激。谢谢 这应该行得通 def factorial(n): if n % 2 != 0: n -= 1 return 1 if (n < 1) else n * factorial(n-2) print(factorial(6)) print(factorial(7))

def阶乘(n):

我似乎无法解决这个问题。我可以找到偶数阶乘的偶数整数,但我似乎无法同时找到奇数阶乘的偶数整数。我已经做了好几天了。我对python非常陌生,因此任何帮助都将非常感激。谢谢

这应该行得通

def factorial(n):
    if n % 2 != 0:
        n -= 1
    return 1 if (n < 1) else n * factorial(n-2)
    
print(factorial(6))
print(factorial(7))
如您所见,
n=6
n=7
(偶数和奇数)等于

factorial = lambda x: functools.reduce(lambda x, y: x*y, range(2, x+1, 2))

使用内部方法
functools.reduce
以防止最大递归深度

如果要手动计算5,将从哪个数字开始?13岁?25美元?对于其他一些奇数n?如果你没有精确地达到0,请更改你的条件以避免无休止的循环。。。用手做你的逻辑,从给定的n/3开始,你会看到。还可以查找模运算符
%
来检测偶数/奇数。调用
阶乘(n-2)
会更有效,因为
n-1
保证是奇数。@thierrylahuille它调用
阶乘(n-2)
值得注意,并允许您编写
math.prod(范围(2,x+1,2))
,而不是
functools.reduce(λx,y:x*y,范围(2,x+1,2))
48
48
factorial = lambda x: functools.reduce(lambda x, y: x*y, range(2, x+1, 2))