Используя рекурсию, подсчитать количество чисел и их сумму - C (СИ)
Формулировка задачи:
Дана последовательность положительных чисел, признаком конца которых служит отрицательное число. Используя рекурсию, подсчитать количество чисел и их сумму. Может кто сможет написать программу на Си. Признателен))
Решение задачи: «Используя рекурсию, подсчитать количество чисел и их сумму»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void f(int *arr, int *sum, int *n){
if( arr[*n] > 0){
*sum += arr[*n];
(*n)++;
f(arr, sum, n);
}
}
int main(int argc, char *argv[]){
int num = 0;
printf("Write number of elements:\n");
scanf("%d", &num);
int *arr = (int *)calloc(num, sizeof(int));
printf("Write elements of array:\n");
for(int i=0;i<num;i++)
scanf("%d", &arr[i]);
int sum = 0, n = 0;
f(arr, &sum, &n);
printf("sum: %d\nnumber of elements in sum: %d\n", sum, n);
return 0;
}
Объяснение кода листинга программы
В данном коде реализована рекурсивная функция для подсчета суммы элементов в массиве.
- Объявлены три переменные: — num - количество элементов в массиве — arr - указатель на массив — sum - сумма элементов массива
- Введенный пользователем размер массива сохраняется в переменной num
- С помощью функции calloc выделяется память под массив заданного размера
- Пользователю предлагается ввести элементы массива, которые сохраняются в переменной arr
- Инициализируются переменные sum и n, которые будут использоваться в рекурсивной функции
- Рекурсивная функция f вызывается с аргументами arr, sum и n
- В функции f происходит проверка: если элемент массива больше нуля, то он прибавляется к сумме и увеличивается счетчик элементов n
- Рекурсивный вызов функции f происходит до тех пор, пока не будет достигнут конец массива (элемент с отрицательным значением)
- После окончания рекурсии выводится сумма элементов массива и количество элементов, участвующих в суммировании