рекурсия, еще одна |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
рекурсия, еще одна |
lopata |
Сообщение
#21
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Договорились.
Насколько мой воспаленный мозг соображает: То есть из "5" будет столько же путей сколько и из "2" , ; из "6" будет столько путей сколько из "3" +из "2" Добавлено через 9 мин. из середины и из вершин только один путь. Сообщение отредактировано: lopata - |
volvo |
Сообщение
#22
|
Гость |
Цитата из "7" тоже столько сколько и из "5". А я не говорил ,что тебе известно число путей из "5", заметь... Кроме того, вершины "5" и "7" никак не связаны между собой, поэтому и при вычислении f("7") - обозначим это так - ты не должна рассматривать f("5"). Семерка связана ТОЛЬКО с "3", поэтому придется тебе выражать количество путей из "7" через количество путей из "3"...Цитата из "6" будет столько путей сколько из "3" +1 ; Неправда... Из "6" ты можешь пойти либо через "2" (тогда число путей будет равно тому, что нам известно для "2"), либо через "3" (тогда число путей совпадет с их числом для "3"). А всего их будет f("6") = f("2") + f("3")Возражения? |
lopata |
Сообщение
#23
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Да, это я поняла.
|
lopata |
Сообщение
#24
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
если честно, не смогла применить эту логику...
поэтому просто подогнала формулу.. |
andriano |
Сообщение
#25
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
В данном случае мне кажется более продуктивным №обратить" задачу. Т.е. двигаться по дереву не от основания к вершине (в направлении распространения пламени), а от вершины к основанию (т.е. в обратном направлении).
Очевидно, в каждой вершине образуются два новых пути кроме центрального ствола, где их три. Сообщение отредактировано: andriano - |
volvo |
Сообщение
#26
|
Гость |
Цитата поэтому просто подогнала формулу.. Ну, и что у тебя получилось? Какова окончательная "подогнанная" формула? |
lopata |
Сообщение
#27
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
f(n)=f(n-1)*2+1
|
TarasBer |
Сообщение
#28
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
И как же тогда будет выглядеть код функции на паскале?
-------------------- |
volvo |
Сообщение
#29
|
Гость |
Цитата f(n)=f(n-1)*2+1 Это неправильная формула. По крайней мере ты не вычислишь по ней ничего. Чему, скажем, равно F(1)? |
lopata |
Сообщение
#30
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
тогда я вообще не понимаю/
Сообщение отредактировано: lopata - |
volvo |
Сообщение
#31
|
Гость |
Тебе уже неоднократно говорили, что надо ставить граничные условия. Если б ты написала, что
f(n) = f(n-1) * 2 + 1; f(0) = 0 - это уже можно было бы запрограммировать. А так у тебя нет ни малейшего шанса дождаться вычисления по приведенной тобой формуле: программа все время будет искать предыдущее значение. До бесконечности. Практически же все окончится гораздо раньше: как только переполнится стек - программа вылетит с ошибкой. Вот, например, формула, которая выдаст правильный ответ (если правильно запрограммировать функцию, и правильно ее вызвать): f(0) = 0; f(1) = 1; f(n) = f(n - 1) + 2(f(n - 2) + 1) |
lopata |
Сообщение
#32
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
а если я сделаю так:
? Добавлено через 3 мин. вычисляет верно.. |
TarasBer |
Сообщение
#33
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> вычисляет верно..
Ну и хорошо. Добавлено через 2 мин. От себя добавлю: я даже не буду придираться к *2 вместо shl 1, всё равно пытаться оптимизировать вычисление степени двойки через рекурсию бесполезно, а если уж оптимизировать, то ответ писать в виде f := 1 shl (n shr 1 + 1) - 1, но он, увы не соответствую требованию задания непременно воткнуть рекурсию. -------------------- |
lopata |
Сообщение
#34
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
но все равно ведь формула должна быть другая..
|
TarasBer |
Сообщение
#35
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Формула правильная, в чём проблема?
-------------------- |
lopata |
Сообщение
#36
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
не знаю. просто я очень долго мучалась. пыталась найти какие-то решения. а тут раз и ..
|
lopata |
Сообщение
#37
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
всем большое спаcибо.
|
lopata |
Сообщение
#38
|
Пионер Группа: Пользователи Сообщений: 99 Пол: Женский Реальное имя: vera Репутация: 0 |
Volvo,спасибо) оказывается эта логика очень даже пригодилась.
нужно было сделать функцию с 2 параметрами: номер уровня и номер буквы по счету. |
Текстовая версия | 24.12.2024 0:51 |