You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现两个关联递推序列的求解技术问询

修正后的关联序列Python实现

原代码的问题

  • a函数无需将b作为参数传入,直接调用全局定义的b函数即可
  • 递归调用a(n-1)时未传参,会引发参数缺失错误
  • 调用a(2,b)的方式错误,不需要传递b函数对象

正确的递归实现代码

from math import sqrt, pi

def a(n):
    if n == 1:
        return 30
    else:
        return a(n-1) * 1.1 + (sqrt(2)/(1+pi)) * b(n-1)

def b(n):
    if n == 1:
        return 10
    else:
        return b(n-1) * 1.1 - (sqrt(2)/(1+pi)) * a(n-1)

# 调用示例:计算n=2时的两个序列值
print("a(2) =", a(2))
print("b(2) =", b(2))

优化:迭代实现(避免递归栈溢出)

如果需要计算较大的n值,递归可能会导致栈溢出,推荐用迭代方式实现:

from math import sqrt, pi

def calculate_sequences(n):
    if n == 1:
        return 30, 10
    a_prev, b_prev = 30, 10
    coeff = sqrt(2)/(1+pi)
    for _ in range(2, n+1):
        a_current = a_prev * 1.1 + coeff * b_prev
        b_current = b_prev * 1.1 - coeff * a_prev
        a_prev, b_prev = a_current, b_current
    return a_prev, b_prev

# 计算n=5时的值
a_5, b_5 = calculate_sequences(5)
print("a(5) =", a_5)
print("b(5) =", b_5)

内容的提问来源于stack exchange,提问作者Hassan Bouamoud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:40:44