我应该在Python中创建一个函数来生成tribonaci序列。此函数必须递归。基于此,目前我有以下代码:
def TribRec(n) :
if (n == 0 or n == 1 or n == 2) :
return []
elif (n == 3) :
return [0,1][:n]
else :
sequence = TribRec(n-1)
sequence.append(sequence[len(sequence)-1] +
sequence[len(sequence)-2] + sequence[len(sequence)-3])
return sequence
def Trib(n) :
for i in range(1, n) :
print( TribRec(i) , " ", end = "")
# Driver code
n = 10
Trib(n)
运行此代码时,我得到以下输出:
^{pr2}$相反,我需要length=n的输出,这里是10,形式如下:
[0, 1, 2, 3, 6, 11, 20, 37, 68, 125]
如何修复当前代码?在
不是在每次递归调用中都返回列表,而是返回第n个元素并在
Trib
函数上聚合列表:这要简单得多:
您的代码可以写得更简洁,如下所示。在
说明
TribRec
。在{0, 1, 2}
,则返回n
。在Trib(n)
,使用生成器删除样板代码(列表实例化,附加到列表)。在相关问题 更多 >
编程相关推荐