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

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

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).

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


Гость






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


Пионер
**

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

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


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


Пионер
**

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

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


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

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

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


Пионер
**

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

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


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


Гость






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

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


Пионер
**

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

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


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

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


Гость






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


Гуру
*****

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

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


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


Пионер
**

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

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


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

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

я это и имела в виду.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
lopata
сообщение 4.01.2010 4:05
Сообщение #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 - 4.01.2010 4:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 4.01.2010 4:11
Сообщение #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 
 К началу страницы 
+ Ответить 
lopata
сообщение 4.01.2010 4:17
Сообщение #14


Пионер
**

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

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


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

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

 



- Текстовая версия 20.06.2025 19:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"