Я пытаюсь использовать рекурсивную функцию в первый раз и получаю сообщение об ошибке «Превышена максимальная глубина рекурсии при вызове объекта 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)
При вызове этой функции с DataFrame, состоящим из одного столбца, я получаю сообщение об ошибке выше. Как вы, вероятно, можете сказать, я все еще нахожусь в процессе обучения с Python, и мой вопрос: правильно ли я использую рекурсию функции или это ошибка из-за других частей моего кода?
Спасибо за любую помощь!
Это 30 первых элементов DataFrame.
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