含函数序列的递推公式

2024-04-19 05:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我要写一个递归序列并打印它的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)

Tags: 代码in功能编码forreturndefrange
1条回答
网友
1楼 · 发布于 2024-04-19 05:27:07

只需在每次迭代中用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结果:打印有副作用。在一个程序中,你通常试图区分计算函数和有副作用的函数。你知道吗

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

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

现在您可以询问g例如前10个元素,或者执行过滤器。。。此外,元素的生成也很慢。你知道吗

相关问题 更多 >