方程式的python编程帮助

方程式的python编程帮助,python,ipython,Python,Ipython,我是python新手,正在尝试学习一些代码。这是我第一次尝试用python编程。我有一个序列S和一个序列T(这也是一个耦合递归关系方程的关系),其中 Sn=2S(n-1)+S(n-2)+4T(n-1) T=S(n-1)+T(n-1) S0=1、S1=2、T0=0和T1=1 如何编写一个返回S和T序列的第n个值的函数,其中该函数以n作为参数,并作为调用该函数的结果返回Sn,Tn作为元组 以下是递归函数: def T(n): if n == 0: return 0 i

我是python新手,正在尝试学习一些代码。这是我第一次尝试用python编程。我有一个序列S和一个序列T(这也是一个耦合递归关系方程的关系),其中

Sn=2S(n-1)+S(n-2)+4T(n-1)

T=S(n-1)+T(n-1)

S0=1、S1=2、T0=0和T1=1


如何编写一个返回S和T序列的第n个值的函数,其中该函数以n作为参数,并作为调用该函数的结果返回Sn,Tn作为元组

以下是递归函数:

def T(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return S(n - 1) + T(n - 1)

def S(n):
    if n == 0:
        return 1
    if n == 1:
        return 2
    return 2 * S(n - 1) + S(n - 2) + 4 * T(n - 1)

def tuple_func(n):
    return(S(n), T(n))
n==20
n==30
之间的某个地方,这会变得非常缓慢,这取决于你的可笑程度

“为了好玩”,我已经将递归函数转换为迭代版本。在我的电脑上,它能在大约一秒钟内完成多达50000次的运算

def tuple_func(n):
    S = [1, 2]
    T = [0, 1]
    if n < 0:
        return(None, None)
    if 0 >= n < 2:
        return(S[n], T[n])
    for n in range(2, n + 1):
        S.append(2 * S[n - 1] + S[n - 2] + 4 * T[n - 1])
        T.append(S[n - 1] + T[n - 1])
    return(S[n], T[n])
def tuple_func(n):
S=[1,2]
T=[0,1]
如果n<0:
返回(无,无)
如果0>=n<2:
返回(序列号,序列号)
对于范围(2,n+1)内的n:
附加(2*S[n-1]+S[n-2]+4*T[n-1])
附加(S[n-1]+T[n-1])
返回(序列号,序列号)

检查,发现速度太慢时,用迭代函数替换。