0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
|
||||||
1 | ||||||
Не получается с рекурсией16.11.2012, 02:02. Показов 776. Ответов 11
Метки нет (Все метки)
У меня получается бесконечный вызов рекурсивной функции. Может кто подскажет, где кроется ошибка?
0
|
16.11.2012, 02:02 | |
Ответы с готовыми решениями:
11
Не получается решить задание на рекурсией! Делаю лабораторную работу с рекурсией , но выполнить условие не получается с++ с рекурсией Функция с рекурсией |
33 / 33 / 5
Регистрация: 16.11.2012
Сообщений: 59
|
||||||
16.11.2012, 03:26 | 2 | |||||
По-моему,
0
|
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
|
|
16.11.2012, 09:52 [ТС] | 4 |
А почему нельзя сравнить адреса указателей одного и того же массива? Находится ли определенный элемент левее искомого? Поясните, почему так нельзя сравнивать.
0
|
33 / 33 / 5
Регистрация: 16.11.2012
Сообщений: 59
|
|
16.11.2012, 09:58 | 5 |
Не факт. Твои элементы могут быть раскиданы по памяти как хотят. Можешь для интереса повыводить ptr.
0
|
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
|
|
16.11.2012, 10:20 [ТС] | 6 |
Согласен. Но ведь сравниваю адреса ни каких-то абстрактных указателей, а адреса памяти конкретного массива, элементы которого расположены в смежных ячейках памяти. И прибавляя 1 к указателю, я переставляю его на адрес следующей ячейки памяти массива. Ведь я присвоил указателю конкретный адрес нулевого индекса массива.
0
|
33 / 33 / 5
Регистрация: 16.11.2012
Сообщений: 59
|
|
16.11.2012, 10:30 | 7 |
Тоже не факт. Зависит от компилятора. И ptr+1 - это просто команда перейти на следующий элемент.
0
|
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
|
|
16.11.2012, 10:38 [ТС] | 8 |
А почему бесит, так и не объяснил.
Добавлено через 7 минут Цитирую Стивена Прата: "Каждое значение сохраняется в отдельном элементе массива, и компьютер сохраняет все элементы массива в памяти ПОСЛЕДОВАТЕЛЬНО - друг за другом". Указатель передвигается по смежным адресам этого массива, так опять-таки, почему нельзя сравнить между собой эти адреса посредством указателя?
0
|
33 / 33 / 5
Регистрация: 16.11.2012
Сообщений: 59
|
|
16.11.2012, 10:56 | 9 |
Да, был не прав, прочел тоже на сайте Microsoft.
A &ptr[7] у нас определен вообще? Ведь у нас 7 элементов, значит &ptr[6] последний, логичнее поставить <= &ptr[6].
0
|
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
|
|
16.11.2012, 11:07 [ТС] | 10 |
Пробовал, но все тоже.
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,701
|
|
16.11.2012, 11:19 | 11 |
ключевое значение ЭТОГО
когда у тебя будет ptr == &ptr[6] куда будет указывать ptr + 1? мы уже на краю массива и добавление 1 чревато но не это главное главное а вот это это будет всегда исполнятся перепишем чтобы стало понятней ptr < (ptr+7) сократим на ptr 1<7 всегда ты каждый раз передаешь в функцию новый адрес и сравниваешь этот новый адрес со смешением 7 относительно нового адреса Добавлено через 3 минуты извини, коряво написал (с точки зрения математики)но смысл не теряется правильно написать так вычитаем ptr(упрощаем) 0<7 всегда
2
|
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
|
|
16.11.2012, 11:33 [ТС] | 12 |
Спасибо, понял. Я думал, что написав &ptr[7], ptr в этом выражении не будет смещаться на 1, а будет смещаться только ptr. Но конечно же, (ptr + 7) и &ptr[7] абсолютно эквивалентны.
0
|
16.11.2012, 11:33 | |
16.11.2012, 11:33 | |
Помогаю со студенческими работами здесь
12
Сложность с рекурсией Програма с рекурсией Задача с рекурсией! Бинарное с рекурсией Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |