python 实现double factorial recursive双阶乘递归算法
double factorial recursive双阶乘递归算法介绍
双阶乘(Double Factorial)是一个数学概念,它指的是从某个数开始,每隔一个数相乘直到1或指定的结束点。对于正整数n,其双阶乘有两种定义方式,取决于n的奇偶性:
- 当n是偶数时,n的双阶乘定义为 n ! ! = n × ( n − 2 ) × ( n − 4 ) × ⋯ × 4 × 2 n!!=n×(n−2)×(n−4)×⋯×4×2 n!!=n×(n−2)×(n−4)×⋯×4×2。
- 当n是奇数时,n的双阶乘定义为 n ! ! = n × ( n − 2 ) × ( n − 4 ) × ⋯ × 3 × 1 n!!=n×(n−2)×(n−4)×⋯×3×1 n!!=n×(n−2)×(n−4)×⋯×3×1。
下面是一个使用递归算法实现双阶乘的Python示例代码:
def double_factorial(n):
# 递归终止条件
if n <= 1:
return 1
# 递归调用
if n % 2 == 0:
return n * double_factorial(n-2)
else:
return n * double_factorial(n-1)
# 注意:上面的实现对于奇数n的情况并不完全符合双阶乘的定义
# 正确的奇数n的双阶乘应该递归到1而不是n-1
# 修正后的奇数n的双阶乘递归实现
def double_factorial_corrected(n):
# 递归终止条件
if n <= 1:
return 1
# 递归调用
if n % 2 == 0:
return n * double_factorial_corrected(n-2)
else:
return n * double_factorial_corrected(n-2) # 注意这里改为n-2
# 测试
print(double_factorial(6)) # 应该输出720,但上面的实现会给出错误的结果
print(double_factorial_corrected(6)) # 正确的输出720
print(double_factorial_corrected(5))
double factorial recursive双阶乘递归算法python实现样例
双阶乘(double factorial)是指对于一个正整数n,其双阶乘为n!!,定义为n!! = n * (n-2) * (n-4) * … * 2(当n为偶数)或者n!! = n * (n-2) * (n-4) * … * 1(当n为奇数)。
下面是用递归算法实现双阶乘的Python代码:
def double_factorial(n):
if n == 0 or n == 1:
return 1
elif n % 2 == 0:
return n * double_factorial(n - 2)
else:
return n * double_factorial(n - 2)
# 测试代码
n = 7
result = double_factorial(n)
print("双阶乘的结果为:", result)
输出结果:
双阶乘的结果为: 105