Python 用于计算序列第n个元素的脚本
我试图编写一些代码来计算序列的第n个元素Python 用于计算序列第n个元素的脚本,python,sequence,Python,Sequence,我试图编写一些代码来计算序列的第n个元素 a_i = 2 * a_i-1 + 1 for i > 0, where a_0 = 1. 我理解这个公式是如何工作的,以及如何用Python实现它 我只是不知道如何找到第n个元素的公式 我已经有一段时间没上第二课了 我知道有一种方法可以找到配方,所以如果有人有任何建议,我将不胜感激 我会发布一些代码,但我知道这是错误的,并且没有计算第n个元素 到目前为止,我只是对每个元素进行硬编码。所以,正如我所说,一旦我知道了找到第n个元素的公式,我就可以编
a_i = 2 * a_i-1 + 1 for i > 0, where a_0 = 1.
我理解这个公式是如何工作的,以及如何用Python实现它
我只是不知道如何找到第n个元素的公式
我已经有一段时间没上第二课了
我知道有一种方法可以找到配方,所以如果有人有任何建议,我将不胜感激
我会发布一些代码,但我知道这是错误的,并且没有计算第n个元素
到目前为止,我只是对每个元素进行硬编码。所以,正如我所说,一旦我知道了找到第n个元素的公式,我就可以编写代码了。你不需要直接给出第n个元素的公式。计算第一个元素,然后计算第二个元素,以此类推,直到得到第n个元素。您不需要直接给出第n个元素的公式。计算第一个元素,然后计算第二个元素,以此类推,直到得到第n个元素。这可以通过一个非常简单的递归函数来完成:
def a(i):
if i == 0:
return 1
return 2 * a(i - 1) + 1
当然,如果您需要一个类似[ai for i in range1000]的列表,您不希望函数重新计算a0、a1、…、an-2、an-1以计算所有n的an,因此您需要一个缓存:
import functools
@functools.lru_cache(None)
def a(i):
... # do the thing
这可以通过一个非常简单的递归函数来实现:
def a(i):
if i == 0:
return 1
return 2 * a(i - 1) + 1
当然,如果您需要一个类似[ai for i in range1000]的列表,您不希望函数重新计算a0、a1、…、an-2、an-1以计算所有n的an,因此您需要一个缓存:
import functools
@functools.lru_cache(None)
def a(i):
... # do the thing
首先,观察a_0=1=2**0+1-1 现在,通过归纳法: a_i=2*a_i-1+1=2*2**i-1+1-1+1=2**i+1-1 这将为您提供一个封闭形式的解决方案:
>>> def a(i):
... return 2**(i+1) - 1
...
>>> [a(i) for i in range(10)]
[1, 3, 7, 15, 31, 63, 127, 255, 511, 1023]
首先,观察a_0=1=2**0+1-1 现在,通过归纳法: a_i=2*a_i-1+1=2*2**i-1+1-1+1=2**i+1-1 这将为您提供一个封闭形式的解决方案:
>>> def a(i):
... return 2**(i+1) - 1
...
>>> [a(i) for i in range(10)]
[1, 3, 7, 15, 31, 63, 127, 255, 511, 1023]
哇!谢谢大家!!老实说,我甚至没有想过使用递归公式。谢谢大家!哇!谢谢大家!!老实说,我甚至没有想过使用递归公式。谢谢大家!