Здравствуйте, поясните, пожалуйста, программу.
"Напишите рекурсивную функцию, которая возвращает среднее из n элементов массива чисел. "
Я поняла, что такое рекурсия, но не могу понять, что в итоге должна вывести программа. Буду благодарна за нормальное пояснение. Спасибо.
Другие языки программирования и технологии
Язык программирования C#
В общем я так насоображал (для начала в паскале) :
Считает среднее арифметическое, как я понял (не?) . Думаю понятно, как работает.
Первый аргумент отвечает за количество (фиксирован) , второй варьируется, благодаря чему возникает подобие привычного цикла (на самом деле идет рекурсивное вложение) . Суммирование ведется фактически с последнего элемента к первому.
В C# с приставкой ref не срабатывает =(
Надо смотреть тонкости работы с рекурсией.
Код для класса реализуемой функции:


Считает среднее арифметическое, как я понял (не?) . Думаю понятно, как работает.
Первый аргумент отвечает за количество (фиксирован) , второй варьируется, благодаря чему возникает подобие привычного цикла (на самом деле идет рекурсивное вложение) . Суммирование ведется фактически с последнего элемента к первому.
В C# с приставкой ref не срабатывает =(
Надо смотреть тонкости работы с рекурсией.
Код для класса реализуемой функции:

Возможно пропущено слово "арифметическое"? т. е дан массив чисел, вычисляется сумма его элементов, и делится на количество, вывестись должно число так называемое "среднее арифметическое". Если это так то именно этот алгоритм тебе нужно реализовать с помощью рекурсии. (Полное извращение!!!) Удачи
Навскидку так: http://pastebin.com/0Z6FpY7J
Вызываешь эту функцию как
double result = RecursiveAverage(arr, 0, 0);
где arr - предварительно заполненный массив, iteration - номер текущего суммируемого элемента, sum - текущая сумма.
Суть работы метода: если текущее значение iteration - больше длины массива, значит мы перебрали все его элементы, поэтому в аргументе sum у нас сумма всех элементов массива. Следовательно, просто возвращаем частное суммы и количества элементов массива - это и будет среднее арифметическое, делаем выход из рекурсии. В противном случае мы прибавляем к sum элемент массива с индексом iteration и рекурсивно вызываем наш метод, передавая ему тот же массив, увеличенное на единицу значение iteration и новое значение sum.
Вызываешь эту функцию как
double result = RecursiveAverage(arr, 0, 0);
где arr - предварительно заполненный массив, iteration - номер текущего суммируемого элемента, sum - текущая сумма.
Суть работы метода: если текущее значение iteration - больше длины массива, значит мы перебрали все его элементы, поэтому в аргументе sum у нас сумма всех элементов массива. Следовательно, просто возвращаем частное суммы и количества элементов массива - это и будет среднее арифметическое, делаем выход из рекурсии. В противном случае мы прибавляем к sum элемент массива с индексом iteration и рекурсивно вызываем наш метод, передавая ему тот же массив, увеличенное на единицу значение iteration и новое значение sum.
Похожие вопросы
- Стоит ли изучать язык программирования C++ ?И какое преимущество этого языка? Где он мне пригодится ?
- Основные различия языка программирования C# от С++.
- Вопрос по языку программирования C# (СиШарп) (очень простой вопрос)
- Я учусь в 5 классе и хочу научится языку программирования C++.
- Язык программирования C.
- Язык программирования C#
- Сложно ли будет изучить язык программирования C#?
- Почему язык программирования C++ считается одним из самых сложных языков программирования?
- Умрёт ли язык программирования C++?
- Функции в языке программирования C.