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