我是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作为元组返回作为调用函数的结果?
答案 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 == 20
和n == 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])