python 实现double factorial recursive双阶乘递归算法

double factorial recursive双阶乘递归算法介绍

双阶乘(Double Factorial)是一个数学概念,它指的是从某个数开始,每隔一个数相乘直到1或指定的结束点。对于正整数n,其双阶乘有两种定义方式,取决于n的奇偶性:

  1. 当n是偶数时,n的双阶乘定义为 n ! ! = n × ( n − 2 ) × ( n − 4 ) × ⋯ × 4 × 2 n!!=n×(n−2)×(n−4)×⋯×4×2 n!!=n×(n2)×(n4)××4×2
  2. 当n是奇数时,n的双阶乘定义为 n ! ! = n × ( n − 2 ) × ( n − 4 ) × ⋯ × 3 × 1 n!!=n×(n−2)×(n−4)×⋯×3×1 n!!=n×(n2)×(n4)××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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luthane

您的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值