包含函数的序列的递归公式
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 个元素,或执行过滤器,...元素进一步延迟生成。
我要编写一个递归序列并打印它的 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 个元素,或执行过滤器,...元素进一步延迟生成。