Определить прирост суммы за первые k месяцев - C (СИ)
Формулировка задачи:
Добрый день,помогите разобраться с рекурсией,что это такое? и как правильно использовать?!
p.s. формулировка задачи:
Вкладчик банка сделал вклад в размере n рублей под a% в месяц.
a. Определить прирост суммы за первые k месяцев
b. Определить сумму вклада за первые l месяцев
заранее спасибо.
Решение задачи: «Определить прирост суммы за первые k месяцев»
textual
Листинг программы
#include <stdio.h>
double _bank_rcsv(double n, const double* a, unsigned k) {
return k? _bank_rcsv(n + n * *a, a, k - 1): n;
}
double bank_rcsv(double n, double a, unsigned k) {
return _bank_rcsv(n, &a, k);
}
int main(void) {
double n, a;
unsigned k;
scanf("%lf%lf%u", &n, &a, &k);
printf("%lf", bank_rcsv(n, a, k) - n);
scanf("%u", &k);
printf("%lf", bank_rcsv(n, a, k));
return 0;
}
Объяснение кода листинга программы
- bank_rcsv - функция, которая рекурсивно вычисляет прирост суммы за первые k месяцев
- Входные параметры функции:
- n - начальная сумма
- a - размер ежемесячного прироста
- k - количество месяцев
- Выходной параметр функции - прирост суммы за первые k месяцев
- Если k>0, то функция вызывает саму себя, увеличивая сумму на a и уменьшая k на 1
- Если k=0, то функция возвращает начальную сумму
- main - основная функция программы
- Входные параметры функции:
- n - начальная сумма
- a - размер ежемесячного прироста
- k - количество месяцев
- Выполняется вход в программу и считывание входных данных с помощью функции scanf
- Вызывается функция bank_rcsv для вычисления прироста суммы за первые k месяцев
- Результат вычисления выводится на экран с помощью функции printf
- Выполняется выход из программы