包含函数的序列的递归公式

Recursive formula of a sequence containing a function

我要编写一个递归序列并打印它的 n 个第一个值。 有编码的函数:

def f(x):
    return x**2 - 4

def h(x):
    return (x-(((3-x)*f(x))/(f(3)-f(x))))

现在我想编写递归序列的代码并打印它的第 n 个值:

xn+1 = h(xn)

对于 x1 = 4/3

我的代码当然不工作(我收到相同的值 n 次,但我想得到类似的东西):

def g(n):
    for i in range(1, n+1):
        x = 4/3
        x = h(x)
        print(x)

您只需在每次迭代时用 4/3 覆盖 x

def g(n):
    for i in range(1, n+1):
        x = 4/3
        x = h(x)
        print(x)

只需将语句移至循环上方:

def g(n):
    x = 4/3
    for i in range(1, n+1):
        x = h(x)
        print(x)

也许您还想 print(x) 在进入循环之前。

不过,您可以在某些方面改进您的代码:首先我不会 print 结果:打印有 side-effects。在程序中,您通常会尝试区分计算函数和具有 side-effects.

的函数

接下来,在相同的上下文中,我会使用 generator 而不是 return 列表或其他内容。您可以简单地为任意数量的索引定义序列:

def g():
    x = 4/3
    while True:
        x = h(x)
        yield x

现在您可以询问 g 例如前 10 个元素,或执行过滤器,...元素进一步延迟生成。