【问题标题】:how to define a function in an iteration manner in python?如何在python中以迭代方式定义函数?
【发布时间】:2020-11-16 16:00:16
【问题描述】:

我想通过以下方式定义一个随输入 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 解释器不会在函数中添加浮点数。当然我可以用命令式的方式来做,但我一般想知道是否有一种方法可以根据已经给定的函数生成函数。

【问题讨论】:

    标签: python function functional-programming


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-14
        • 1970-01-01
        • 2019-04-15
        • 2013-07-15
        • 2018-12-26
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        相关资源
        最近更新 更多