如何在python中以迭代方式定义函数?

2024-10-03 15:28:52 发布

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

我想用以下方式定义一个随输入x变化的函数:

1/x + 1/(x^2) + 1/(x^3) + ... + 1/(x^n)

其中n由用户决定。 为n=2编写了一个简单的代码:

def extendFunction(f, i):
    return lambda x : float(i) / float(x) + f


def f(x):
    return 1.0 / float(x)


i = 2
f = extendFunction(f, i)
print(f(1.5))

但正如您所观察到的,它不会工作,因为python解释器没有向函数添加浮点。当然,我可以用命令式的方式来做,但我想知道是否有一种方法可以基于已经给定的函数生成函数


Tags: 方法lambda函数代码用户return定义def
2条回答

使用n的输入函数, 并定义几何级数函数,如下所示:

n = int(input("Highest power of term in geometrical series?"))


def calc_geometric_series(x):
    progression = [1 / (x ** i) for i in range(1, n + 1)]
    return sum(progression)


print(calc_geometric_series(5))

运行示例:

Highest power of term in geometrical series?10
0.24999997440000005

您可以这样定义一个递归函数

def IterativeSum(n,x):
  if (n == 1):
    return (1.0/x)
  else:
     return (1.0/x)*(IterativeSum(n-1,x)+1)
print(IterativeSum(2,5)) // random value for x

我想这会管用的。下面显示一个干运行

Taking example of IterativeSum(3,x)
(1/x) * (IterativeSum(2,x)+1)
(1/x) * (1/x * (IterativeSum(1,x)+1)+1)
(/x)*(1/x*(1/x+1)+1)
(1/x)*(1/x^2+1/x+1)
1/x^3+1/x^2+1/x

相关问题 更多 >