Вы, похоже, неправильно поняли, как работают рекурсивные функции: вы не возвращаете результат (, хотя в конце функции return
!). Вы, кажется, думаете, что counter
является общим для рекурсивных вызовов - но дело обстоит наоборот. Фактически, сам принцип рекурсии основан на том, что нет совместного использования.
Каждый рекурсивный вызов получает новую counter
переменную. Ваша задача - сложить все эти результаты вместе. Например, возьмите только якорь рекурсии:
if (firstTime)
{
firstTime = false;
counter = 0;
GetNumberOfDevicesForManagementGroup(managementGroupId, firstTime);
}
Это неправильно; это должно действительно выглядеть так:
if (firstTime)
{
return GetNumberOfDevicesForManagementGroup(managementGroupId, false);
}
Здесь важно вернуть результат. Но настройка firstTime
не нужна (и необычна), и настройка counter
вообще также не нужна.
Остальная часть тела метода должна быть соответственно изменена.
(Кроме того, этот рекурсивный якорь кажется бессмысленным. Его также можно было бы опустить.)