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

时间:2017-01-12 14:18:24

标签: python recursion sequence

我要写一个递归序列并打印出第一个值。 有编码的功能:

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

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

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

x n + 1 = h(x n

对于x 1 = 4/3

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

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

1 个答案:

答案 0 :(得分:4)

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

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结果:打印有副作用。在程序中,您通常会尝试区分计算的函数和具有副作用的函数。

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

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

现在你可以问g例如前10个元素,或者执行过滤器......还会懒惰地生成元素。