使用Python中的递归计算exp(x)

Ske*_*uey 5 python math recursion exp

我正在尝试使用递归来计算e ^ x,e ^ x = e ^(x/2)*e ^(x/2),并且e ^ x的三阶Maclaurin扩展和脚本保持返回1. I我不是在寻找更高精度的解决方案,只是想了解脚本出错的地方:)

我的想法是,当函数值低于限制时,如果有足够的迭代,它应该以(1 + x/N +(x/N)^ 2/2)^ N结束.

def exp(x):
      if abs(x)<0.0001:
            return 1+x+x**2/2
      else:
            y=exp(x/2)
            return y*y
Run Code Online (Sandbox Code Playgroud)

Jak*_*fin 7

试试这个(注意2.0在递归调用中):

def exp(x):
    if abs(x) < 0.0001:
        return 1 + x + x**2 / 2.0
    else:
        y = exp(x / 2.0)
        return y * y
Run Code Online (Sandbox Code Playgroud)

它是失败的,因为如果你传入一个整数in x,比如说1,然后进行x / 2整数除法(在python 2.x中),这将导致0而不是0.5.通过使用x / 2.0,它强制python使用浮动除法.

  • 请注意,这只是Python 2中的一个问题.在3.x中,```总是表示真正的除法,无论操作数如何. (2认同)