Форум программистов, компьютерный форум CyberForum.ru

Рекурсия - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дружественные бинарные операторы http://www.cyberforum.ru/cpp-beginners/thread981626.html
//прототипы внутри класса friend bool operator==(const Polynomial&, const Polynomial&); Polynomial &operator=(const Polynomial&); //Оператор присвоения Polynomial& Polynomial::operator=(const Polynomial& obj) { if (this == obj) return this; clear_list(&head); List *carriage = obj.head;
C++ Ошибка при "сборе мусора" . Повреждение кучи Привет ребята! Я совсем скверно знаю плюсы и не смотря на несколько лет довольно успешной работы в ИТ так и не заставил себя заниматься этим языком "вплотную", поэтому прошу помощи у вас, как экспертов. Я тут писал маленькую программулину, задача которой в рамках текущего код-ревью даже и не важна, и наткнулся на ошибку, которую никак не могу устранить. В результате компиляции программа: ... http://www.cyberforum.ru/cpp-beginners/thread981623.html
Описать функцию, что подсчитывает количество чисел в списке C++
содержающуя процедура формирования списка и функцию, подсчитывает количество чисел в списке, которые соответствуют Вашему варианту(13вариант)
C++ Мультисписок на базе бестиповых указателей (оцените код и подскажите что исправить )
Здравствуйте , Задача стояла реализовать мультисписковую структуру на базе массива бестиповых указателей. Структура примерно выглядит так прикрепленном изображении. Делал отдельный шаблонный класс который работал со массивом бестиповых указателей. А уже в структуре сделал поле указатель на этот объект этого класса. Но мне не нравится реализация моя . Хотелось бы сделать как-то более...
C++ Указатели С++ http://www.cyberforum.ru/cpp-beginners/thread981607.html
Здравствуйте) Помогите пожалуйста, нужно написать программу, в которой нужно имитировать функцию strchr(используя только указатели и не используя ) и пользователь вводит строку сам
C++ Pomagite naiti summu Помогите найти сумму 1 + (1/(k!)) k от 1 до n Console.Write("Vvedite n = "); double n = int.Parse(Console.ReadLine()); double summa = 0; for (int i = 1; i <= n; i++) { summa += (1 / i); } подробнее

Показать сообщение отдельно
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
19.10.2013, 20:39     Рекурсия
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
Да, из него родимого. Нет, это я понял. Меня интересует именно то, каким образом функция получает значение 24 в переменную mid. Потому что это значение должно получаться именно при вызове первой функции с mid в качестве high.
Ну вот например: level = 3, значит при вызове первой функции level-1 = 2. Получаем что mid = 16 так? то бишь 32/2. Потом вызывается эта же функция с level -1, level = 1. Получается mid = 16/2 = 8, так?. Далее функция опять вызовет сама себя но натолкнется на проверку условия level == 0 и выполнит оператор return. Что происходит дальше? откуда программа берет значение 24 в переменную mid?

Добавлено через 1 час 35 минут
в общем я вставлял в код принтф и заметил такую штуку. В определенный момент, при вызове функции, значение low в ней становится 16 а high = 32, они складываются, делятся на 2 и получается 24. НО КАК!?!? Ведь при вызове функции один параметр high или low всегда константый.... либо low = 0 и high переменная, либо high = 64 а low переменная. Как они обе поменяли значение!?!?!
долго пытался понять то, что тебе не понять...

low и high не меняются, меняется только mid. Мы при вызове функции, просто от середины меняем границы функции, в одном случае вместо low ставим mid, в другом вместо high. Ты функцию вызываешь первый раз, subdivide(ar, low(0), high(64), level - 1);
потом она вызывает сама себя с разными значениями:
subdivide(ar, low(0), mid(32), level - 1);
subdivide(ar, mid(32), high(64), level - 1);
дальше mid снова меняется, и для каждой функции из этих 2ух он будет свой, т.е. в 1ом случае (0+32)/2=16, в другом (32+64)/2=48, потом каждая из функций вызывает другие две себя, дргумими значениями mid

я не понимаю что непонятно...)
 
Текущее время: 20:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru