Рекурсия, рекурсиваная процедура.... |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Рекурсия, рекурсиваная процедура.... |
Миклашевский Денис |
Сообщение
#1
|
Гость |
Доброго времени суток! Если кто может помогите с задачкой...:
Написать рекурсивную процедуру, которая считывает вводимые с клавиатуры числа до тех пор, пока не будет обнаружен 0.Затем введенные числа распечатываются в обратном порядке.0 Не печатать. спасибо заранее! |
spill |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Андрей Репутация: 2 |
|
Гость |
Сообщение
#3
|
Гость |
А можно для "тупых" с телом программы ?
|
klem4 |
Сообщение
#4
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
begin ReadInt end. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
vRs |
Сообщение
#5
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Миклашевский Денис Репутация: 0 |
В люом случае, это ведь не рекурсия...
|
volvo |
Сообщение
#6
|
Гость |
Цитата В люом случае, это ведь не рекурсия... Ну да, конечно... Только ReadInt сама себя вызывает, и все... Определение рекурсии выучи, потом придешь дальнейшие вопросы задавать. |
Michael_Rybak |
Сообщение
#7
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Цитата В люом случае, это ведь не рекурсия... Действительно. Это не рекурсия. Это рекурсивная процедура. |
sintanial |
Сообщение
#8
|
Пионер Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: 1 |
Не хотел создавать новую тему, так что спрошу тута.
Вот задание: Написать программу которая подсчитывает сумму и количество элементов в массиве до первого отрицательного элемента, и сделать это надо с помощью рекурсии . Не рекурсивным методом решить эту задачи не составляет и малейшего труда, а вот как рекурсией не понятно. Вот минут 15-20 сидел в поисковике но так и не нашел не че подходящего, связанного с моей задачей. Подскажите пожалуйста что нужно делать =) Вот задача без рекурсии =)
З.ы. Для начало сделайте подсказку, может сам смогу написать- просто пока что трудно осмыслить с рикурсией =) Сообщение отредактировано: sintanial - |
volvo |
Сообщение
#9
|
Гость |
Для начала вынеси собственно решение в отдельную процедуру, и тогда уже будем смотреть дальше...
|
sintanial |
Сообщение
#10
|
Пионер Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: 1 |
ну воть
Забыл сказать, что нельзя использовать циклы. можно только в вводе и выводе массива и все =)
Сообщение отредактировано: sintanial - |
sintanial |
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: 1 |
Вот написал но оно не пашет =). Пишет ошибку типа выход за границы изменения индекса =) Как исправить ?
Сообщение отредактировано: sintanial - |
volvo |
Сообщение
#12
|
Гость |
Цитата Забыл сказать, что нельзя использовать циклы В принципе, рекурсия и будет заменять цикл...Смотри... Во-первых, твоя процедура может быть описана вот так: procedure Mat(const a: array of real; var k:real); , что даст тебе возможность более гибко работать с массивами. Во-вторых, поскольку тебе надо _и_ сумму _и_ количество, то логичнее сделать функцию:
|
sintanial |
Сообщение
#13
|
Пионер Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: 1 |
Спасибо огромное, щас буду разбираться что да как =)
|
sintanial |
Сообщение
#14
|
Пионер Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: 1 |
Уже появились вопросы =)
const a: array of real выбивает ошибку =( пишет типа ожидался символ "[", тогда я поставил размер [1..100] и он опять выдает ошибку Вот эту фразу не хочет читать потому как при вызове функциии вот здесь ругается mat(a[1], n - 1, sum) пишет "Нельзя приобразовать выражение типа real к выражению типа array[1..100] of real - воть так вот =( И еще volvo наш учитель почему то не разрешает пользоваться "exit" говорит что должны учиться делать без неё так как это типа делает программиста более не опытным если ей пользуешься =(. Это не к кому конечно же тута не относится- просто мнение нашего учителя =). (хотя какой там из меня опытный программист =) ). А вот без exit я вот уже час думаю как сделать =) З.ы. Может ошибка выбивает из за того что я работаю на Pascal ABC( нам пока на других запрещают работать ) ? а не на Turbo Pascal =) |
andriano |
Сообщение
#15
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
И еще volvo наш учитель почему то не разрешает пользоваться "exit" говорит что должны учиться делать без неё так как это типа делает программиста более не опытным если ей пользуешься =(. Это не к кому конечно же тута не относится- просто мнение нашего учителя =). В принципе exit следует применять очень осторожно, т.к. от этого повышается вероятность допустить ошибку и код становится менее наглядным - хуже видна структура.Смотри, что у тебя есть:
При этом если условие выполняется, то мы не выполняем ничего, что находится ниже, что полностью эквивалентно ветке "иначе" условного оператора, т.е. этот пример эквивалентен следующему:
Сообщение отредактировано: andriano - |
volvo |
Сообщение
#16
|
Гость |
Да не выбивает оно ничего (если ты используешь TP, конечно) - я на TP7 проверял - все прекрасно работает. А вот если у тебя ABC - это надо говорить сразу. Этим поделием я не пользуюсь, и что там и как - не знаю... Можешь попробовать поменять Const на Var, если PascalABC вообще умеет работать с открытыми массивами.
Цитата А вот без exit я вот уже час думаю как сделать Бред какой-то несет твой преподаватель... Если б Exit и ему подобные делали программистов менее опытными, неужели ж их не вывели из состава языка? Ан нет, в любом языке присутствуют аналоги... Здесь проблема решается просто:function mat(const a: array of real; n: integer;, но в другом месте потребуется наворотить еще столько же кода. Это кому-то надо? |
sintanial |
Сообщение
#17
|
Пионер Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: 1 |
Ясно =). Спасибо огромное. А на счет ABC - просто я учусь в РГУ(ростовский гос-во универ ) на мехмате и так как там глава кафедры программирование Михалкович (сделал PascalABC) то всем приходится работать на нем =), щаз попробую запустить в PascalABC.net , может заработает =) !
З.ы. У мя наверно ж поэтому и не работали многие программы которые ты мне помогал делать: с некоторыми модулями или еще с чем нить то что не поддерживает АBC =) |
volvo |
Сообщение
#18
|
Гость |
PascalABC workaround:
type arrtype = array[1 .. 100] of real; Сообщение отредактировано: volvo - |
Текстовая версия | 4.05.2024 17:58 |