IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> рекурсия
сообщение
Сообщение #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).

Честно говоря, вообще не понимаю как это делать..
Объясните, пожалуйта, если кто понял, что нужно вообще делать в этом задании.
Не понимаю как это можно делать с помощью рекурсии..да и вообще не понимаю как это делать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Подозрительно похоже на Салфетку Серпинского. Посмотри в FAQ-е, klem4 по-моему, показывал, как такое делается...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Спасибо, volvo. Просто не было понятно , что это вообще.
Попробую разобраться.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Как выяснилось (хотя возможно и неверно), что количество
Candles =(3 в степени (h-1)) + (3 в степени (h-2))

Вроде сходится..
а как применить на практике не знаю
саму рекурсию не особо понимаю.
Не мог бы кто-нибудь объяснить как это можно сделать.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


всё...терь я совсем запуталась.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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. После этого рекурсия как бы возвращается назад, используя полученные значения... Вообще конечно это сложно объяснить smile.gif .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Как выяснилось (хотя возможно и неверно), что количество
Candles =(3 в степени (h-1)) + (3 в степени (h-2))

Вроде сходится..
Не сходится, потому что неверно. Верная формула: Candles(h) = (3h - 1) / 2
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Спасибо,Tony . Но я все равно не могу понять как работают эти рекурсии.ypriamii.gif

Добавлено через 2 мин.
volvo , а как ты откопал эту формулу?.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
а как ты откопал эту формулу?
А чего ее откапывать? Я ее и не закапывал вообще-то. У меня память хорошая, если честно, я просто помню много разных формул...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(lopata @ 3.01.2010 23:11) *
а как ты откопал эту формулу?.
Вообще-то формулы не откапываются, а выводятся.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Цитата
а как ты откопал эту формулу?.

Вообще-то формулы не откапываются, а выводятся.

я это и имела в виду.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Спасибо smile.gif . Теперь, кажется, начинаю понимать как работают рекурсии.
Вот такая вот функция получилась с итерацией:

FUNCTION CandlesIter (h : Integer):integer;
VAR i, c : integer;
temp :integer;
BEGIN
temp:=0;
FOR i:= 1 TO h DO
temp:= 3*temp+1;
CandlesIter:=temp;
END;



Сообщение отредактировано: lopata -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(lopata @ 4.01.2010 4:05) *
Спасибо smile.gif . Теперь, кажется, начинаю понимать как работают рекурсии.
Вот такая вот функция получилась с итерацией:
FUNCTION CandlesIter (h : Integer):integer;
VAR i, c : integer;
temp :integer;
BEGIN
temp:=0;
FOR i:= 1 TO h DO
BEGIN
temp:= 3*temp+1;
CandlesIter:=temp;
end;
end;

А где тут рекурсия? blink.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Как видишь, тут рекурсии нет.
Я говорю о той функции, которую написал Tony.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 22:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name