【问题标题】:Finding the sequence of the recursive formula找到递归公式的序列
【发布时间】:2016-02-09 20:44:57
【问题描述】:

序列由

定义

$$ x_0 = 1 $$

$$ x_n = {1 + x_{n-1}}^(0.5) $$

我试图找出第 n 个整数的限制,但由于某种原因,我的 x_1 值没有传递到第三个元素。

这是我的代码:

def recursion (x):
x_0 = 1
x_1 = (2)**(0.5)
lst = [1]

while  len(lst) <= x:
    x_0, x_1 = x_1, ((1+x_0)**(1/2))
    lst.append(x_0)
print(lst)

它仅适用于前 2 个元素。

这就是我想要它做的

【问题讨论】:

  • 抱歉,这里没有使用 Latex 的使用方法。道歉
  • 你不能在 SO 上使用 Latex。你能给出比“发现很难”更好的问题描述吗?见minimal reproducible example

标签: python-3.x for-loop while-loop


【解决方案1】:

问题出在这里:

x_0, x_1 = x_1, ((1+x_0)**(1/2))

您同时计算 x_0x_1,但您的新 x_1 公式预计 x_0 已经更新。如果你把它们分开,你应该得到你所期望的:

x_0 = x_1
x_1 = (1+x_0)**(1/2)

不过,您保留的值超出了您的需要。你只需要一个初始化值,而不是中间变量,你可以从lst的顶部读取:

lst = [1.0]
while len(lst) <= x:
    lst.append((1+lst[-1])**(0.5))

【讨论】:

    【解决方案2】:

    您用python-3.x 标记了您的问题,但您似乎使用Python 2 运行此问题。我不知道为什么,但在Python2 中我得到[1, 1.4142135623730951, 1, 1.0, 1, 1.0, 1, 1.0, 1, 1.0, 1] 而Python3 返回正确的序列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多