如何避免最大递归深度?

2024-09-29 20:29:34 发布

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

我第一次尝试使用递归函数,得到错误“调用Python对象时超过了最大递归深度”

我最初试图对阿伦的移动平均线进行编码。我在另一个平台上找到了这方面的代码,我正在尝试用Python编写它

以下是另一种脚本语言的原始代码:

    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = AFRV2[1] + ((Seriesv2 - ((AFRV2[1] + AFRV2[Period2]) / 2)) / Period2)

# where [1] is the previous element

以下是我的尝试:

def AhrensAverage(TimeSeries, period):
    for index, rows in TimeSeries.iterrows():
        if index < period:
            AFRV2 = rows
        else:
            AFRV2 = AFRV2 + ((rows.iloc[-1] - ((AFRV2 + AhrensAverage(TimeSeries, period)) / 2)) / period)

当使用由一列组成的数据帧调用此函数时,我得到上面的错误消息。 正如您可能知道的,我仍然在学习Python,我的问题是我是否“正确”地使用了函数递归,或者错误是由于代码的其他部分造成的

谢谢你的帮助

这是数据帧的前30个元素

0   114.4050
1   114.9425
2   115.7075
3   114.5175
4   113.4825
5   114.3150
6   115.5950
7   116.0200
8   119.1650
9   129.3700
10  131.8000
11  131.7325
12  130.6075
13  131.0800
14  131.0575
15  131.2150
16  130.4275
17  129.8875
18  130.5400
19  131.1250
20  130.9675
21  130.2025
22  129.8875
23  129.8425
24  129.1225
25  126.4025
26  127.3000
27  128.3350
28  128.2225
29  128.7625

Tags: 数据对象函数代码编码index错误rows
1条回答
网友
1楼 · 发布于 2024-09-29 20:29:34

如果其他人在寻找阿伦移动平均线,这是我的代码:

def AhrensMovingAverage(source, period):
    afr = []
    for index, rows in source.iterrows():
        if index < Period:
            afr.append(rows)
        else:
            afr.append(afr[-1] + ((rows.iloc[-1] - ((afr[-1]+ afr[-Period]) / 2)) / Period))
    return afr

相关问题 更多 >

    热门问题