Разработать рекурсивную функцию, не возвращающую значений: даны первый член и разность арифметической прогрессии. написать рекурсивную функцию для нахождения n-го члена и суммы n первых членов прогрессии. сделать в c++ подробно и с пояснениями,

sempai1 sempai1    1   22.09.2019 19:40    10

Ответы
Kari200511 Kari200511  01.09.2020 22:05
#include <iostream>

using namespace std;

void arithmeticProgression(const int& first, const int& differense, const int& N){
    // first - первый номер арифметической прогрессии
    // difference - разность
    // N - число, до которого продолжать прогрессию

    static int sum = 0; // тут будет сумма
    static int callsNumber = 0; // считаем число вызовов функции для определения номера элемента последовательности
    int next = first + differense; // следующий элемент прогрессии
    sum += first; // подсчет суммы

    if(callsNumber == N){
        cout << "finally item: " << first << endl;
        cout << "sum: " << sum << endl;
        sum = 0;
        callsNumber = 0;
        return; // если следующий элемент идет по порядку больше N, то прервать рекурсию
    }
    else{
        callsNumber++;
        arithmeticProgression(next, differense, N); // иначе делать тоже самое со следующим числом прогрессии
    }
}

int main(){
    arithmeticProgression(2, 3, 3); // пример вызова
    return 0;
}
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика