Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64

Использовать циклы запрещено, вместо них стоит применить рекурсивные вызовы

03.02.2019, 14:29. Показов 1697. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

есть задача:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <cmath>
#include <iostream>
#include <time.h>
#include <cstdlib>
 
using namespace std;
 
int rrand(int range_min, int range_max) {
    return rand() % (range_max - range_min + 1) + range_min;
}
 
const unsigned int ARRSIZE = 100;
const int ABSLIMIT = 100;
 
int main() {
    
    int x[ARRSIZE];
    int y[ARRSIZE];
    int z[ARRSIZE];
    srand(static_cast<unsigned>(time(NULL)));
 
    for (unsigned int i = 0, j = 1; i < ARRSIZE; i++) {
            x[i] = rrand(-ABSLIMIT,ABSLIMIT);
            y[i] = rrand(-ABSLIMIT,ABSLIMIT);
        
    if (x[i] > y[j]) {
            z[i] = x[i] - y[i];
            cout << "z[" << i << "] = " << z[i] <<endl;
        }
        else cout << "y[" << i << "] = "<< y[i] <<endl;
    }
    return 0;
}
Необходимо заменить цикл рекурсией. Помогите, пожалуйста !
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2019, 14:29
Ответы с готовыми решениями:

Стоит использовать PDO вместо mysqli_query?
Я в своих проектах использую mysqli_query, но подумываю полностью перейти на интерфейс PDO, так как через него можно работать со многими...

Как работают рекурсивные вызовы?
здравствуйте. можете объяснить как работают рекурсивные вызовы. например : 1. когда вызывается дважды, что при этом происходит. что...

Есть РС под ХР стоит ли использовать вместо ПЛК?
Есть РС под ХР стоит ли использовать вместо ПЛК?

5
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
03.02.2019, 15:55
Ressin, У вас и этот код не рабочий if (x[i] > y[j]) в данном случае в y[j] мусор
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64
03.02.2019, 15:58  [ТС]
Avaddon74, Вот условия задачи:

Написать программу, где X, Y - массивы, состоящие из 100 числовых элементов, строящую массив: Элементы которого представляют собой разность соответствующих элементов массивов X и Y, если первый элемент массива X больше второго элемента массива Y, и массив Y в остальных случаях.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
03.02.2019, 16:12
Лучший ответ Сообщение было отмечено Ressin как решение

Решение

Ressin, Заполнять можно так, а там дальше сами допилите
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cmath>
#include <iostream>
#include <time.h>
#include <cstdlib>
 
using namespace std;
 
const unsigned int ARRSIZE = 100;
const int ABSLIMIT = 100;
 
struct Point {
    int x, y, z;
};
 
void rrand(Point *p, int range_min, int range_max, int count) {
    static int n = 0;
    if (count) {
        p[n].x = rand() % (range_max - range_min + 1) + range_min;
        p[n++].y = rand() % (range_max - range_min + 1) + range_min;
        rrand(p, range_min, range_max, --count);
    }
}
 
int main() {
    Point point[ARRSIZE];
    srand(static_cast<unsigned>(time(NULL)));
 
    rrand(point, -ABSLIMIT, ABSLIMIT, ARRSIZE);
 
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от Ressin Посмотреть сообщение
если первый элемент массива X больше второго элемента массива Y
сделайте заполнение в обратную строну, не от нуля а от 99 до нуля и будет вам счастье

Добавлено через 2 минуты
тогда рекурсию можно переписать так:
C++
1
2
3
4
5
6
7
void rrand(Point *p, int range_min, int range_max, int count) {
    if (count >= 0) {
        p[count].x = rand() % (range_max - range_min + 1) + range_min;
        p[count].y = rand() % (range_max - range_min + 1) + range_min;
        rrand(p, range_min, range_max, --count);
    }
}
Добавлено через 40 секунд
и вызов соответственно rrand(point, -ABSLIMIT, ABSLIMIT, ARRSIZE - 1);
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64
03.02.2019, 17:03  [ТС]
Avaddon74, Могли бы Вы объяснить значение данных строк в коде ? Что они делают ?
Цитата Сообщение от Avaddon74 Посмотреть сообщение
static int n = 0;
Цитата Сообщение от Avaddon74 Посмотреть сообщение
Point point[ARRSIZE];
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
03.02.2019, 17:41
Цитата Сообщение от Ressin Посмотреть сообщение
static int n = 0;
Это уже не нужно, т.к. массив заполняем с конца
Point point[ARRSIZE]; Объявляем массив структур Point, так удобней передавать в функцию, чем три разных массива, а заполняем уже в рекурсии
сама структура:
C++
1
2
3
struct Point {
    int x, y, z;
};
Добавлено через 5 минут
а вообще static int n = 0; здесь static говорит о том, что эта переменная будет видна всем рекурсиям, а не у каждой рекурсии своя, это нужно чтоб корректно заполнять массив.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2019, 17:41
Помогаю со студенческими работами здесь

Написать программу, используя рекурсивные вызовы
Написать программу, используя рекурсивные вызовы. Из данной числовой последовательности A вычеркнуть минимальное число элементов так,...

SSD на ноуте HP 15-ay027ur: стоит ли использовать UEFI вместо MBR?
Куплен диск 240 ГБ SSD WD Green для ноутбука HP 15-ay027ur. Если я установлю режим UEFI, то будет ли ноутбук быстрее работать? ...

Написать программу используя рекурсивные вызовы: сложение двух целых чисел
1. Определить значение F(x), если функция задана на множестве целых чисел соотношением (с помощью рекурсии): ...

Даны три вещественных числа. Вывести сумму тех из них, что принадлежат отрезку. Циклы не использовать
Даны три вещественных числа. Вывести сумму тех из них, что принадлежат отрезку . Циклы не использовать. Как еще можно, если не циклом?

Стоит ли использовать MemCashed вместо MySQL если на сервер в день поступают свыше 10тысяч запросов?
Объясните пожалуйста про MemCashed она и вправду снижает нагрузку на сервер???? Работает в 3раза быстрее????? Буду очень благодарен если...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru