Нужно посчитать сумму арифметической прогрессии с помощью рекурсии

Нужно посчитать сумму арифметической прогрессии с помощью рекурсии с вводимыми данными:

  • значение первого элемента
  • разница
  • размер

Вот код, но у меня ничего не выходит с настройкой данных вводимых с консоли.

#include <iostream>
using namespace std;

class progressionRec
{
public:
  void operator()(int a1, int d, int n) {
    ++count;
    if(n <= 1){
      cout << a1 << " ";
    } else {
      int next = a1 + d;
      operator()(next, d, n - 1);
      cout << a1 << " ";
    }
  }


  size_t getCount() const
  {
    return count;
  }

private:
  std::size_t count = 0;
};

int main()
{

    auto func = progressionRec();
    func(2,3,15);
    std::cout << "\nCount:" << func.getCount() << std::endl;
    return 0;
}

Ответы (1 шт):

Автор решения: Павел Ериков

Как и писал Harry: "А суммировать кто будет?"

Решение: просто добавить первой строчкой в operator() суммирование sum += a1, и получать сумму можно так же через функцию getSum()

Можно также вынести рекурсию в дополнительную функцию, и каждый вызов operator() обнулять sum и count.

void operator()(int a1, int d, int n) {
    count = 0;
    sum = 0;
    nextTerm(a1, d, n);
}

В функции nextTerm очевидно нужно вызывать рекурсивно её же, а не operator()

Вывод программы при вызове func(2, 3, 15) и func(2, 3, 3):

Результат

P.s. если вы хотите вывод в обратном порядке, то поместите cout перед рекурсивным вызовом nextTerm

→ Ссылка