Нужно посчитать сумму арифметической прогрессии с помощью рекурсии
Нужно посчитать сумму арифметической прогрессии с помощью рекурсии с вводимыми данными:
- значение первого элемента
- разница
- размер
Вот код, но у меня ничего не выходит с настройкой данных вводимых с консоли.
#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
