Используя рекурсию, подсчитать количество чисел и их сумму - 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 происходит до тех пор, пока не будет достигнут конец массива (элемент с отрицательным значением)
- После окончания рекурсии выводится сумма элементов массива и количество элементов, участвующих в суммировании
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д