我正在尝试编写一些代码来计算序列的第n个元素。
a_i = 2 * a_i-1 + 1 for i > 0, where a_0 = 1.
Run Code Online (Sandbox Code Playgroud)
我了解该公式的工作原理以及如何在Python中实现该公式。
我只是迷失在如何找到第n个元素的公式。
自从我使用clac2已经有一段时间了。
我知道有一种找到公式的方法,因此,如果有人有任何提示,将不胜感激!
我会发布一些代码,但我知道这是错误的,并且不计算第n个元素。
截至目前,我只是对每个元素进行硬编码。因此,正如我所说,一旦我知道要查找第n个元素的公式,就可以编写代码。
首先,观察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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |