Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
25 / 25 / 30
Регистрация: 22.10.2011
Сообщений: 160
1

Рекурсивная функция для расчета числа Y

03.05.2012, 11:05. Показов 914. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
написать рекурсивную функцию:
Определить величину Y, как наибольший из индексов элементов массива X, равных 1.
массив вводится в отдельной функции и его элементами являются 1 и -1.

помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2012, 11:05
Ответы с готовыми решениями:

Рекурсивная функция для расчета суммы всех двузначных чисел
Напишите рекурсивную функцию расчета суммы всех двузначных чисел.

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

Рекурсивная функция для вычисления квадрата натурального числа
Написать рекурсивную функцию для вычисления квадрата натурального числа, если известно, что (n +...

Рекурсивная функция для вычисления количества цифр натурального числа
Нужно написать рекурсивную функцию для вычисления количества цифр натурального числа. Подскажите...

7
Заблокирован
Автор FAQ
03.05.2012, 12:15 2
Цитата Сообщение от Zo_0m Посмотреть сообщение
написать рекурсивную функцию:
Определить величину Y, как наибольший из индексов элементов массива X, равных 1.
массив вводится в отдельной функции и его элементами являются 1 и -1.
помогите пожалуйста
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
#include <iostream>
using namespace std;
 
int getIndex(int * arr, int i)
{
    if((0 < (i = i - 1)) && arr[i] != 1)
        getIndex(arr, i);
    return i;
}
 
 
int main()
{
    int i, n = 0;
    int * arr = NULL;
    cout<<"Enter number elements in array : ";cin>>n;
    arr = new int[n];//Âûäåëèëè ïàìÿòü ïîä ìàññèâ
    for(i = 0; i < n; i++)
    {
        cout<<"X["<<i + 1<<"] = ";
        cin>>arr[i];
    }
    cout<<"Y = "<<getIndex(arr, n)<<endl;
    system("pause");
    return 0;
}
Миниатюры
Рекурсивная функция для расчета числа Y  
0
25 / 25 / 30
Регистрация: 22.10.2011
Сообщений: 160
03.05.2012, 14:03  [ТС] 3
-=ЮрА=-, не работает... Функция выдает Y=i-1, то есть например если если элементов 5, выведет 4, если 6 - 5. -1 и 1 в массиве вообще не влияет на Y по-вашему
0
Заблокирован
Автор FAQ
03.05.2012, 16:20 4
Цитата Сообщение от Zo_0m Посмотреть сообщение
-=ЮрА=-, не работает... Функция выдает Y=i-1, то есть например если если элементов 5, выведет 4, если 6 - 5. -1 и 1 в массиве вообще не влияет на Y по-вашему
сейчас посмотрю, писал быстро возможно что то упустил
0
Заблокирован
Автор FAQ
03.05.2012, 16:33 5
Zo_0m, вот так уже норм работает
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
#include <iostream>
using namespace std;
 
int getIndex(int * arr, int i)
{
    int k = i == 0 ? i : i - 1;
    if((i = i - 1) && arr[i] != 1)
        k = getIndex(arr, i);
    return k;
}
 
 
int main()
{
    int i, n = 0;
    int * arr = NULL;
    cout<<"Enter number elements in array : ";cin>>n;
    arr = new int[n];//Âûäåëèëè ïàìÿòü ïîä ìàññèâ
    for(i = 0; i < n; i++)
    {
        cout<<"X["<<i<<"] = ";
        cin>>arr[i];
    }
    cout<<"Y = "<<getIndex(arr, n)<<endl;
    system("pause");
    return 0;
}
Миниатюры
Рекурсивная функция для расчета числа Y  
1
25 / 25 / 30
Регистрация: 22.10.2011
Сообщений: 160
03.05.2012, 19:03  [ТС] 6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
int k = i == 0 ? i : i - 1;
* * if((i = i - 1) && arr[i] != 1)
Объясните пожалуйста, а что значат эти строчки? вернее для чего они.. почему k=i или k=i-1 и зачем i=i-1?

Добавлено через 32 минуты
-=ЮрА=-, если сделать так:
C++
1
2
3
4
5
6
7
int getIndex(int *arr, int i)
{
           int k=i;        
       if (arr[i] != 1) { i=i-1;
       k = getIndex(arr, i);}
    return k;
}
что изменится?
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
03.05.2012, 19:26 7
C++
1
2
3
int getIndex( const int *const arr, const int i ) {
    return ( i >= 0 ? ( arr[ i ] == 1 ? i : getIndex( arr, i - 1 )) : -1 );
}
Я вот так вижу решение. Если 1 нет в массиве, то возвращается -1.
0
Заблокирован
Автор FAQ
04.05.2012, 11:34 8
Цитата Сообщение от Zo_0m Посмотреть сообщение
Объясните пожалуйста, а что значат эти строчки? вернее для чего они.. почему k=i или k=i-1 и зачем i=i-1?
- посмотри на вызов функции

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
<getIndex(arr, n)
если передавать n то без i - 1 будет ситуация выхода за пределы отведенной под массив области

Цитата Сообщение от Zo_0m Посмотреть сообщение
arr[i = n] != 1
У нас нет arr[n]!
Вчера уже пояснял в одном топике что значит тернарный оператор
Цитата Сообщение от Zo_0m Посмотреть сообщение
int k = i == 0 ? i : i - 1;
https://www.cyberforum.ru/post2986854.html

Лан сейчас попробую попроще задание реализовать...

Добавлено через 2 минуты
Zo_0m, думаю нынешний вариант что проще, что понятней будет
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
#include <iostream>
using namespace std;
 
int getIndex(int * arr, int i)
{
    int k = i;
    if(arr[i] != 1)
        k = getIndex(arr, i = i - 1);
    return k;
}
 
 
int main()
{
    int i, n = 0;
    int * arr = NULL;
    cout<<"Enter number elements in array : ";cin>>n;
    arr = new int[n];//Âûäåëèëè ïàìÿòü ïîä ìàññèâ
    for(i = 0; i < n; i++)
    {
        cout<<"X["<<i<<"] = ";
        cin>>arr[i];
    }
    cout<<"Y = "<<getIndex(arr, n - 1)<<endl;
    system("pause");
    return 0;
}
0
04.05.2012, 11:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2012, 11:34
Помогаю со студенческими работами здесь

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

Рекурсивная функция для перевода данного натурального числа в заданную систему счисления
Составить рекурсивную функцию для перевода данного натурального числа в р-ичную систему счисления...

Рекурсивная функция: вычисление n-го числа Фибоначчи
Создать рекурсивную функцию и вычислить значение ее N-го элемента, если f(0)=1 { f(1)=1...

Рекурсивная функция проверки простого числа
Не могу разобраться !! Как она вставляет в код без рекурсива?! Прошу помощи вставте эту долбанную...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru