方程式的python编程帮助

时间:2015-10-29 21:37:19

标签: 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作为元组返回作为调用函数的结果?

1 个答案:

答案 0 :(得分:2)

以下是递归函数:

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 == 20n == 30之间的某个地方,根据你的荒谬门槛,这变得非常缓慢。

“为了好玩”我已经将递归函数转换为迭代版本。在我的计算机上,它可以在大约一秒钟内完成n == 50,000

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])