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

Ответы 4

  • Главная фича - использовать статическую переменную для подсчета суммы, так как она сохраняет свое значение между вызовами функции. Минус в этом - функцию можно вызвать только один раз.
    • Автор:

      alia
    • 5 лет назад
    • 0
  • Если захочешь больше раза вызывать, то обнуляй сумму перед выходом из рекурсии (т.е. перед return)
    • Автор:

      campos6
    • 5 лет назад
    • 0
  • изменил ответ, т.к. обратил внимание на требование суммы по N-ому члену прогрессии, а не до числа N
    • Автор:

      kidd
    • 5 лет назад
    • 0
  • #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;}
    • Автор:

      logangill
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years