嵌套函数的递归表示具有多少精度

Gre*_*ory 0 python floating-point recursion

我将在这里使用python示例来使我的问题更易于理解:

采用嵌套正弦函数的递归表示:

def nestedSin(val, amount): ## val in degrees

    if amount == 1:

        return math.sinh(val)

    return math.sinh(nestedSin(val, amount-1))
Run Code Online (Sandbox Code Playgroud)

所以,如果我运行该功能:

z = nestedSin(20, 3)
Run Code Online (Sandbox Code Playgroud)

我会得到:

z = math.sinh(math.sinh(math.sinh(20)))
Run Code Online (Sandbox Code Playgroud)

我的问题是......这会计算第一个正弦函数并返回它的舍入值(即浮点限制),然后计算返回值的正弦值等等吗?

或者浮点限制是否仅适用于递归函数的最终返回值?

基本上我在问上面是否比以下更准确:

x = math.sinh(20)
y = math.sinh(x)
z = math.sinh(y)
Run Code Online (Sandbox Code Playgroud)

小智 5

有效地sinh连续执行3个操作,每个操作都有自己的舍入; 就像你的x y z例子.

所以,不,没有区别; 我相信所有的方法都是准确的.

  • 解决此问题的一般方法是使用支持abitrary精度数学的库,然后将最终结果舍入到所需的精度.看看http://mpmath.org/ (2认同)