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

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

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

> рекурсивнвный подсчет как распределить мальчиков и девочек, у меня даже идеи нету как ее делать
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


В поездке ученики прибыли в n (0 < n ≤ 15) этажный дом. На одном этаже могут жить только одного пола дети.Учительница должда распределить их придерживаясь правилам с этажом нижей девочки могут жить над мальчиками и над девочками но мальчики могут жить только над девачками. На первом этаже могут жить и девачки и мальчики.
Напишите программу котоорая данным n написала сколько всго можит быть вариантов расселения учеников. Два разных варианта расселения считаются разными когда на одном сперва мальчики а потом девочки живут.
Первичные данные
3
результат
5
Обьяснение
когда n = 3 то тогда вариантов расселения есть 5 ддд,мдд,дмд,мдм,ддм.
Д это девачка М это мальчик.
Но ммд и дмм так неможит быть.
Я совсем нечего непридумал как надо сделать и как останавливать сам цикл может дадите идею как это так сделать


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


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


Вот кажется разобрался как вызвать

program varenti_raspredilenija;

function count(const n: integer; s: string): integer;
begin
if length(s) = n then begin
writeln(s); count := 1;
end
else begin
if (s = '') or (s[length(s)] = 'Д') then
count := count(n, s + 'М') + count(n, s + 'Д')
else
count := count(n, s + 'Д');
end;
end;
var x:integer;
begin
WriteLn('Vvedi cislo ot 0 do 15');
Readln(x);
writeln(count(x,''));
readln;
end.

кажется все правильно и вызывает и результат выводит
и разобрался вот с этим s[length(s)] = 'Д'
program Bevarde2;
var s:string;
begin
s:='МД';
WriteLn(s[length(s)] = 'Д');
Readln;
end.

но запутался в рекурсии как она так считает нечего непонял хоть выполнял с n=2 и пошагово
count := count(n, s + 'М') + count(n, s + 'Д') и тут ведь наверное ошибка должна быть это мне просто так кажется вот и незнаю как тут складывается и как выполняется все остальное

Добавлено через 6 мин.
И тут если взять что я вижу то только n=2 то тогда результат МД все
s + 'М' это так понимаю blush.gif

Добавлено через 2 мин.
а я даже и неподумал что это числа Фибоначчи


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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