Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 01.03.2019
Сообщений: 42

Описать рекурсивную процедуру нахождения в массиве произведения и количества положительных элементов

21.04.2019, 04:16. Показов 1879. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять как сделать это в рекурсивном виде, помогите пож.

Добавлено через 45 секунд
массив одномерный динамический
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2019, 04:16
Ответы с готовыми решениями:

Вычислить суммы отрицательных, произведения положительных и количества нулевых элементов в массиве
Знатоки, помогите написать программы по информатике. У меня полный завал по этой теме, а через неделю уже экзамен :( Надеюсь на вашу...

Составить рекурсивную процедуру нахождения максимального элемента в массиве
3. Составить рекурсивную процедуру нахождения максимального элемента в массиве.

Подсчет количества нечетных и произведения положительных элементов массива
Разработать функцию, осуществляет подсчет количества нечетных и произведения положительных элементов одномерного массива, и с ее помощью...

28
57 / 40 / 21
Регистрация: 26.09.2018
Сообщений: 215
25.04.2019, 22:18
Студворк — интернет-сервис помощи студентам
А вот так нормально?:
C++
1
2
3
4
5
6
7
pair<int, int> f(int *arr, int n) {
    if (n == 1) return make_pair(arr[0] > 0 ? arr[0] : 1, arr[0] > 0);
    if (!n) return make_pair(0, 0);
    auto pr = f(arr, n - 1);
    return make_pair(pr.first * (arr[n - 1] > 0 ? arr[n - 1] : 1),
           pr.second + (arr[n - 1] > 0));
}
у меня вроде работает
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
25.04.2019, 22:18
Kuzia domovenok, рекурсия для вашего кода из поста #8 будет вести себя так:
Миниатюры
Описать рекурсивную процедуру нахождения в массиве произведения и количества положительных элементов  
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
25.04.2019, 22:24
coder0, ну правильно, потому что ты return во всех ветвях условий функции прописываешь, а не только в if(n==0)
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
25.04.2019, 22:27
Kuzia domovenok, вот пример, как можно использовать статическую переменную. Она подсчитывает сколько раз вызывалась функция:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream> 
 
    using namespace std;
    
void f(int n) {
    static int k = 0;
    k++;
    cout << k << "\n";
}
  
int main() {
    f(3);
    f(2);
    f(1);
    system("pause");
    return 0;
}
0
57 / 40 / 21
Регистрация: 26.09.2018
Сообщений: 215
25.04.2019, 22:30
Цитата Сообщение от Fixer_84 Посмотреть сообщение
как можно использовать статическую переменную
я думаю все знают.

Со static это уже не совсем-то и чистая рекурсия.
0
 Аватар для zayats80888
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
25.04.2019, 22:31
Fixer_84, в вашем коде из первого поста, при последнем (n==0) вызове функция возвращает результат в предыдущий вызов, а что с ним происходит дальше?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
25.04.2019, 22:32
Цитата Сообщение от coder0 Посмотреть сообщение
Со static это уже не совсем-то и чистая рекурсия.
Вот и мне говорят, что это неправильно. Теперь буду присваивать результат внутри функции и возвращать
0
 Аватар для zayats80888
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
25.04.2019, 22:34
Я отвечу, ничего, поэтому при раскручивании рекурсивных вызовов, каждый раз создается временный объект по умолчанию, с неинициализированными полями.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
25.04.2019, 22:41
Цитата Сообщение от zayats80888 Посмотреть сообщение
Fixer_84, в вашем коде из первого поста, при последнем (n==0) вызове функция возвращает результат в предыдущий вызов, а что с ним происходит дальше?
Я не знаю как это точно работает. Мне объясняли так, что она сначала раскручивается, а потом начинает закручиваться и вычислять (возвращать) результат для переданного ей параметра. На каждом шаге сверху вниз или снизу вверх. Я не знаю, я подобным образом (правда без статической переменной возвращал результат и система через тесты принимала ответ).

Добавлено через 1 минуту
zayats80888, мой компилятор этот код проглотил и выдает ответ. Я то откуда знаю какие там временные объекты создаются. Теперь буду присваивать как показали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2019, 22:41

Подсчет количества, суммы и произведения четных положительных элементов массива
помогите пожалуйста! разработка программы для подсчета количества, суммы и произведения четных положительных элементов массива. на языке...

Поиск произведения положительных четных элементов в одномерном массиве
Помогите сделать программу поиска произведения положительных четных элементов в одномерном массиве Вот код #include &lt;math.h&gt; ...

Написать рекурсивную функцию для нахождения произведения цифр натурального числа
.Написать рекурсивную функцию для нахождения произведения цифр натурального числа. С помощью этой функции найти произведения цифр пяти...

Подсчет количества отрицательных и положительных элементов в динамическом массиве
Написать функцию, которая получает указатель на динамический массив и его размер, и возвращает количество отрицательных, положительных и...

Создать функцию поиска количества положительных элементов в массиве
Даны массивы A, i = 1,...,20. и C, j = 1, ..., 20. Создать функцию поиска количества положительных элементов в массиве. Определить с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru