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