1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| lopata |
3.01.2010 19:09
Сообщение
#1
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Количество свечей, которые можно поставить(повесить) на Рождественскую елку зависит от высоты(h) елки.
Изучите следующие примеры освещения свечами: ![]() 1 рис. h = 1. Candles = 1; 2 рис. h = 2. Candles = 4; 3 рис. h = 3. Candles = 13; a)Укажите(дайте) рекурсивное определение и рекурсивный алгоритм для Candles(h). b) Реализуйте итеративный ввод с действием для Candles(h). Честно говоря, вообще не понимаю как это делать.. Объясните, пожалуйта, если кто понял, что нужно вообще делать в этом задании. Не понимаю как это можно делать с помощью рекурсии..да и вообще не понимаю как это делать. |
![]() ![]() |
| volvo |
3.01.2010 19:17
Сообщение
#2
|
|
Гость |
Подозрительно похоже на Салфетку Серпинского. Посмотри в FAQ-е, klem4 по-моему, показывал, как такое делается...
|
| lopata |
3.01.2010 19:32
Сообщение
#3
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Спасибо, volvo. Просто не было понятно , что это вообще.
Попробую разобраться. |
| lopata |
3.01.2010 22:22
Сообщение
#4
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Как выяснилось (хотя возможно и неверно), что количество
Candles =(3 в степени (h-1)) + (3 в степени (h-2)) Вроде сходится.. а как применить на практике не знаю саму рекурсию не особо понимаю. Не мог бы кто-нибудь объяснить как это можно сделать. |
| lopata |
3.01.2010 22:44
Сообщение
#5
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
всё...терь я совсем запуталась.
|
| Tony |
3.01.2010 22:52
Сообщение
#6
|
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: 1 |
Ну если я правильно понимаю поставленную задачу, то при h = 4 ответ будет 40, и при этом соотношени Candles(h) = 3^(h-1) + 3^(h-2) неверно...
Но тогда верно другое соотношение, а именно : Candles(h) = 3 * Candles(h - 1) + 1; Candles(1) = 1. Программно это реализуется так : Код function Candles(h:longint):longint; begin if h = 1 then Candles := 1 else Candles := 3 * Candles(h - 1) + 1; end; При этом функция Candles вызывает сама себя до тех пор, пока h не станет равным 1. После этого рекурсия как бы возвращается назад, используя полученные значения... Вообще конечно это сложно объяснить |
| volvo |
3.01.2010 23:10
Сообщение
#7
|
|
Гость |
Цитата Как выяснилось (хотя возможно и неверно), что количество Не сходится, потому что неверно. Верная формула: Candles(h) = (3h - 1) / 2Candles =(3 в степени (h-1)) + (3 в степени (h-2)) Вроде сходится.. |
| lopata |
3.01.2010 23:11
Сообщение
#8
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Спасибо,Tony . Но я все равно не могу понять как работают эти рекурсии.
Добавлено через 2 мин. volvo , а как ты откопал эту формулу?. |
| volvo |
3.01.2010 23:17
Сообщение
#9
|
|
Гость |
Цитата а как ты откопал эту формулу? А чего ее откапывать? Я ее и не закапывал вообще-то. У меня память хорошая, если честно, я просто помню много разных формул... |
| andriano |
3.01.2010 23:17
Сообщение
#10
|
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
| lopata |
3.01.2010 23:19
Сообщение
#11
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Цитата а как ты откопал эту формулу?. Вообще-то формулы не откапываются, а выводятся. я это и имела в виду. |
| lopata |
4.01.2010 4:05
Сообщение
#12
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Спасибо
Вот такая вот функция получилась с итерацией:
Сообщение отредактировано: lopata - 4.01.2010 4:10 |
| Lapp |
4.01.2010 4:11
Сообщение
#13
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Спасибо Вот такая вот функция получилась с итерацией: FUNCTION CandlesIter (h : Integer):integer; А где тут рекурсия? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| lopata |
4.01.2010 4:17
Сообщение
#14
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Как видишь, тут рекурсии нет.
Я говорю о той функции, которую написал Tony. |
![]() ![]() |
|
Текстовая версия | 15.11.2025 14:48 |