我要写一个递归序列并打印出第一个值。 有编码的功能:
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)
答案 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个元素,或者执行过滤器......还会懒惰地生成元素。