Посчитать сумму и количество элементов массива используя рекурсию - C#
Формулировка задачи:
Задана последовательность положительных чисел, признаком конца которых служит отрицательное число. Используя рекурсию, подсчитать количество чисел и их сумму.
Я построил такой массив
По сути посчитать сумму и количество элементов проще простого, но нужно это сделать используя рекурсию, а тут я слаб. Если не сложно помогите и желательно с описанием.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- int N, n = 0;
- Random r = new Random();
- N = r.Next(0,10);
- Console.WriteLine("N = {0}",N);
- int[] M = new int[N];
- do
- {
- int Mm = r.Next(-1, 10);
- M[n] = Mm;
- Console.WriteLine("№{0}: {1,10}", n, Mm);
- n++;
- if (Mm<0)
- {
- N = n;
- }
- } while (n < N);
- Console.ReadLine();
- }
- }
- }
Решение задачи: «Посчитать сумму и количество элементов массива используя рекурсию»
textual
Листинг программы
- static void Main(string[] args)
- {
- int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, -10};
- var numSum = GetNumSum(arr);
- Console.WriteLine("Количество положительных = {0}\r\nСумма = {1}", numSum.Key, numSum.Value);
- }
- private static KeyValuePair<int, int> GetNumSum(IEnumerable<int> source)
- {
- return GetNumSum(source.GetEnumerator());
- }
- private static KeyValuePair<int, int> GetNumSum(IEnumerator<int> enumerator)
- {
- bool next = enumerator.MoveNext();
- if (!next || enumerator.Current < 0)
- {
- return new KeyValuePair<int, int>(0, 0);
- }
- var current = enumerator.Current;
- var numSum = GetNumSum(enumerator);
- return new KeyValuePair<int, int>(numSum.Key + 1, numSum.Value + current);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д