我要编写一个递归序列并打印它的 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)
Simply move the statement above the loop:
def g(n):
x = 4/3
for i in range(1, n+1):
x = h(x)
print(x)
也许您还想在进入循环之前print(x)
。
不过,您可以在某些方面改进您的代码:首先我不会打印
结果:打印有副作用。在程序中,您通常会尝试区分计算函数和具有副作用的函数。
接下来,在相同的上下文中,我将使用 generator不返回列表或其他内容。您可以简单地为任意数量的索引定义序列:
def g():
x = 4/3
while True:
x = h(x)
yield x
现在您可以向 g
询问前 10 个元素,或执行过滤器,...元素进一步延迟生成。
关于python - 包含函数的序列的递归公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41615446/