рекурсия |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
рекурсия |
lopata |
Сообщение
#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 |
Сообщение
#2
|
Гость |
Подозрительно похоже на Салфетку Серпинского. Посмотри в FAQ-е, klem4 по-моему, показывал, как такое делается...
|
lopata |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Спасибо, volvo. Просто не было понятно , что это вообще.
Попробую разобраться. |
lopata |
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Как выяснилось (хотя возможно и неверно), что количество
Candles =(3 в степени (h-1)) + (3 в степени (h-2)) Вроде сходится.. а как применить на практике не знаю саму рекурсию не особо понимаю. Не мог бы кто-нибудь объяснить как это можно сделать. |
lopata |
Сообщение
#5
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
всё...терь я совсем запуталась.
|
Tony |
Сообщение
#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 |
Сообщение
#7
|
Гость |
Цитата Как выяснилось (хотя возможно и неверно), что количество Не сходится, потому что неверно. Верная формула: Candles(h) = (3h - 1) / 2Candles =(3 в степени (h-1)) + (3 в степени (h-2)) Вроде сходится.. |
lopata |
Сообщение
#8
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Спасибо,Tony . Но я все равно не могу понять как работают эти рекурсии.
Добавлено через 2 мин. volvo , а как ты откопал эту формулу?. |
volvo |
Сообщение
#9
|
Гость |
Цитата а как ты откопал эту формулу? А чего ее откапывать? Я ее и не закапывал вообще-то. У меня память хорошая, если честно, я просто помню много разных формул... |
andriano |
Сообщение
#10
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
lopata |
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Цитата а как ты откопал эту формулу?. Вообще-то формулы не откапываются, а выводятся. я это и имела в виду. |
lopata |
Сообщение
#12
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Спасибо . Теперь, кажется, начинаю понимать как работают рекурсии.
Вот такая вот функция получилась с итерацией:
Сообщение отредактировано: lopata - |
Lapp |
Сообщение
#13
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Спасибо . Теперь, кажется, начинаю понимать как работают рекурсии. Вот такая вот функция получилась с итерацией: FUNCTION CandlesIter (h : Integer):integer; А где тут рекурсия? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
lopata |
Сообщение
#14
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Как видишь, тут рекурсии нет.
Я говорю о той функции, которую написал Tony. |
Текстовая версия | 18.04.2024 11:16 |