5 / 5 / 5
Регистрация: 15.05.2012
Сообщений: 66
1

Как вернуть только верхнее значение стека через return

06.04.2018, 23:45. Показов 2198. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть рекурсивная функция, которая возвращает определенное значение. Вопрос - как вернуть только верхнее значение стека через return, а не последнее?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2018, 23:45
Ответы с готовыми решениями:

return как вернуть значение из фукнции?
Всем привет! Есть функция: public void login(string login,string password) { //Здесь идет...

Как вернуть два значения через return?
Вот пример. Мне нужно с помощью функции zero записать в х0=0 , а в х1=1. вооооот, вообщем я хз...

Как вернуть верхнее меню в админке Joomla
Удалил модуль mod_menu. Подскажите как вернуть. Буду очень благодарен Добавлено через 8 часов...

Можно ли через метод типа int вернуть 2 значения (return)?
Вообщем возникла такая проблема. Создал 2 метода для решения дискриминантного уравнения. Один метод...

4
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
06.04.2018, 23:48 2
Цитата Сообщение от kLeimor Посмотреть сообщение
как вернуть только верхнее значение стека через return, а не последнее?
У тебя и так всегда указатель на голову должен быть - он и есть верхнее значение стека.
0
5 / 5 / 5
Регистрация: 15.05.2012
Сообщений: 66
07.04.2018, 00:27  [ТС] 3
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
int QuickSearch(const int* arr, int l, int r,int a,int max)
{
    int middle;
    middle = l + (r - l) / 2;
    cout << "middle = " << middle << endl;
 
    if (arr[0] == a) {
        return 1;
    }
    if (arr[max] == a) {
        return max+1;
    }
    if ((l == (r - 2)) && (!(arr[middle] == a)))
    {
        return 0;
    }
    if (arr[middle] == a) {
        return middle; // вот тутааааааааааааааа
    }
    if (arr[middle] > a) {
        QuickSearch(arr, l, middle, a,max);
 
    }
    if (arr[middle] < a) {
        QuickSearch(arr, middle, r, a,max);
    }
}
Вот там, например после нескольких выполнений функции, middle на первой итерации будет - 7, на второй 3. при middle == 3 выполняется условие и по идее он должен вернуть 3, но как я понял - в стеке находятся 3->7. И вот он выводит 7, нижнее значение стека. -_- а вывести надо 3 это как?
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
07.04.2018, 01:05 4
Лучший ответ Сообщение было отмечено kLeimor как решение

Решение

kLeimor, когда у тебя срабатывает return, функция завершает свою работу и управление возвращается туда, откуда эта функция была вызвана. В твоем случае это либо строка 21, либо 25. Однако ты возвращаемое значение вызванной функции никуда не сохраняешь, так что оно просто теряется.
1
5 / 5 / 5
Регистрация: 15.05.2012
Сообщений: 66
07.04.2018, 01:24  [ТС] 5
понял, спасибо=)
0
07.04.2018, 01:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2018, 01:24
Помогаю со студенческими работами здесь

Как из switch вернуть результат return?
Код public string Method1(string str_1) { string s1; ...

Return. Как вернуть ничего (пустую строку), если стоит тип double?
Как вернуть ничего (пустую строку), если стоит тип double? public double Square() { ...

Ждать событие и только тогда вернуть значение из функции
public override int Execute() { mouseHook.Start(); return 1; }...

Вывести элементы списка в таком же виде как и через print, но через return?
Как вывести элементы списка в таком же виде как и через print,но только через return? def...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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