【发布时间】:2020-03-16 03:11:35
【问题描述】:
顺序是:
an = an-1 + (2 * an-2)
a0 = 1, a1= 1. 求 a100
我的做法是列一个清单。
#List 'a' with a0 = 1 , a1 = 1.
a = [1,1]
#To get the a100, implement 'i' as the index value of the list.
for i in range (2,101):
x = a[i-1] + (2 * a[i-2])
print( str(len(a)) + (": ") + str(x))
#Save new value to list
a.append(x)
是否有另一种方法可以直接获取 a100 的值?或者一个10000的值..会占用这么多内存。
【问题讨论】:
-
您实际上不需要将所有内容存储在列表中:只需将最后两个条目保留在变量中即可。您的更新步骤类似于
a0, a1 = a1, a0+2*a1,然后打印a1。我不知道直接计算值的数学技术,但有一个名为“整数序列在线百科全书”(oeis.org)的网站很可能已经知道这个序列,并且可能列出了一个生成函数。只需计算十几个字词,然后将它们粘贴到网站的搜索字段中。 -
谢谢,这是一个很酷的网站!
-
我试过你的步骤,效果很好。谢谢!
def x(n): a = 1 b = 1 for i in range(2,n): a, b = b, b + 2*a return b print (x(101))