Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2009, 13:19   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
У Кнута в книжке есть вот такая формула для расчета примерного значения.
Там же есть еще пара страниц, посвященных расчету факториала разными способами.
Да это понятно, Вы не уловили сути, это лишь частный случай, верхушка айсберга. Хорошо сформулирую по-другому. Как избежать переполнения стека при расчетах в длинной арифметике. Число разрядов ограниченно 4Гигами (число - есть строка AnsiString Дельфи). Что если я буду умножать одно тысячеразрядное число на другое тысячеразрядное число (а может условия задачи требуют?). А если Вы думаете что таких заданий не бывает, то внимательно посмотрите раздел для студентов. Одна тетка просила калькулятор на Яве с неограниченным числом разрядов . В общем задача сложная, но интересная и главное, вполне решаемая.
Примерное значение . Меня не интересует примерное значение, если я хочу вычислить факториал используя длинную арифметику, зачем мне примерно вычислять факториал? Я число разрядов и так прикину.

Цитата:
Я бы сказал, это классический идиотский академический способ запутать школьников и студентов.
Это не имеет значения, факт в том, что такие операции производятся и вполне допустимы, а куда будут программисты тратить такты своего проца это их трудности. Моя задача не мешать им в этом. И второе - такой стиль используется довольно-таки широко в функциональном программировании, а интрепретатор также имеет некие функциональные замашки, поэтому отрицать рекурсию никоим образом не стоит.

Цитата:
В делфе не знаю, я думал Вы про свой интерпретатор.
Я имел ввиду как из самого интерпретатора регулировать стек?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 24.12.2009 в 14:01.
Utkin вне форума Ответить с цитированием
Старый 24.12.2009, 14:09   #12
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А если считать по ламерски?
n! = 1 * 2 * 3 * 4 * ... * n?
В цикле? В использовании длинной арифметики понадобится только умножение.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.12.2009, 14:17   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А если считать по ламерски?
n! = 1 * 2 * 3 * 4 * ... * n?
В цикле? В использовании длинной арифметики понадобится только умножение.
Да не важно это. Ну смогу я посчитать таким образом не 1000!, а 10000! и упрусь в переполнение стека. Это интерпретатор программ, Вы что запретите программистам использовать рекурсию? А если он захочет разложение в ряд, а там деление? Это не интерпретатор программ для вычисления факториала, а просто интерпретатор для учебных целей.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 24.12.2009, 17:31   #14
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Рекурсия в любом проявлении - проявление того, что человек попал под влияние школы/плохого_универа. И если эта рекурсия проявляется в более глупых местах, чем быстрая сортировка, подсчет выражения или ДФС - влияние было очень плохим.
Любые приближенные формулы очень неудобны для вычисления, так как будут или проблемы с точностью, или проблемы с временем работы. Если надо проверить программу - лучше всего использовать любую АСМ-систему, где есть подобная задача, и сдать код на проверку там. Если же сам код переделывать под АСМ не охота, то написать себе прогу для проверки и ее протестить на АСМ, а потом уже этой прогой тестить основу.

Цитата:
Сообщение от Utkin Посмотреть сообщение
Да это понятно, Вы не уловили сути, это лишь частный случай, верхушка айсберга. Хорошо сформулирую по-другому. Как избежать переполнения стека при расчетах в длинной арифметике.
А можно конкретный пример задания, в котором возникают проблемы? 1000! до задачи явно не дотягивает. До проблемной задачи - тем более.

Последний раз редактировалось LeBron; 24.12.2009 в 17:45.
LeBron вне форума Ответить с цитированием
Старый 25.12.2009, 07:11   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от LeBron Посмотреть сообщение
Рекурсия в любом проявлении - проявление того, что человек попал под влияние школы/плохого_универа.
Блин, еще один. Да мне перепендикулярно хорошо рекурсия или это плохо. Учите Лисп, потом по рекурсии рассуждать будете. Это был образец программы вызывающей переполнение стека. Важно не то что рекурсия это зло, а то что это зло использовать допускается в большинстве языках программирования (иначе была бы проверка запрещающая функции вызывать самих себя), а если допускается значит, считайте что из тысячи программистов найдется, как минимум, один который ее заюзает. Ну что Вы сами как дети малые - вон война тоже плохо и что войны кто-нибудь отменил?
Цитата:
И если эта рекурсия проявляется в более глупых местах, чем быстрая сортировка, подсчет выражения или ДФС - влияние было очень плохим.
Ё-мое. Хорошо представьте что Вы создаете компилятор. Вы разрешите рекурсию или нет? Или у Вас будет специальная проверка запрещающая написание факториала в рекурсивной форме?
Кроме того, рекурсию можно использовать еще в огромной кучи мест, о которых Вы скромно умолчали. Вы когда-нибудь слышали о ленивых вычислениях? ИМХО по рекурсии - идиотская рекурсия в тех местах, в которых ею пользуется идиот.
Цитата:
Если же сам код переделывать под АСМ не охота, то написать себе прогу для проверки и ее протестить на АСМ, а потом уже этой прогой тестить основу.
Пипец полный. И при том сильно смахивает на рекурсию. Вы читали топик? Мне уже дали ссылку, благодаря которой я могу
а) не изобретать велосипед
б) не вникать во все тонкости АСМ (а я знаю его очень поверхностно).
в) не заниматься неделями отладки программы для отладки .
Цитата:
А можно конкретный пример задания, в котором возникают проблемы? 1000! до задачи явно не дотягивает.
А чем Вас эта тема не устраивает? Тестирование длинной арифметики. Результаты уже есть - переполнение стека .
Цитата:
До проблемной задачи - тем более.
По одной простой причине - длинная арифметика не распрастранена на настольных системах, я хочу это исправить. А заодно решить ряд проблем с которыми неизбежно столкнуться программисты, когда начнут более активно использовать такие операции.
В общем такое решение задачи, как не решать задачу и все меня абсолютно не устраивает.

ЗЫ. Что такое ДФС?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 25.12.2009 в 08:38.
Utkin вне форума Ответить с цитированием
Старый 25.12.2009, 09:26   #16
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
Сообщение

DFS - Depth-First Search, поиск в глубину на графах.

Я понял, о чем вы! Вам надо сделать бесконечный стек для любой рекурсии вообще? Тогда наверное надо свой стек сделать, не пользоваться стандартным...
k1r1ch вне форума Ответить с цитированием
Старый 25.12.2009, 09:38   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от k1r1ch Посмотреть сообщение
Я понял, о чем вы! Вам надо сделать бесконечный стек для любой рекурсии вообще? Тогда наверное надо свой стек сделать, не пользоваться стандартным...
Ну в принципе тоже вариант . Я хотел примерно определять нужное мне пространство и увеличивать стек в самой программе.
Хорошо, каким образом? Интерпретатор не использует специальных хитростей, это обычная прога на Делфи со стандартным набором юнитов - подключение форм, классов, модуль Систем и свои юниты, написаные с использованием все тех же стандратных.
Я не использую ассемблерных вставок и напрямую не воздействую на стек программы, так же как и не использую ВинАпи в явной форме (ну вызываю пару диалогов и рисую основную форму). Большинство данных представляются в виде строк (я не хотел, так получилось).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 25.12.2009 в 09:57.
Utkin вне форума Ответить с цитированием
Старый 25.12.2009, 11:04   #18
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Ну тут помочь я не могу. Мое дело предложить . Надо спросить тех, кто Ассемблер знает... Просто наверняка стек Delphi где-то в памяти хранится, можно из него брать и сохранять в любой другой "свой" стек...
k1r1ch вне форума Ответить с цитированием
Старый 25.12.2009, 11:13   #19
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Я конечно извиняюсь, но фраза :
Цитата:
Просто наверняка стек Delphi где-то в памяти хранится
меня убила =)
Levsha100 вне форума Ответить с цитированием
Старый 25.12.2009, 11:22   #20
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Не, я просто неправильно написал . Хотел сказать, что к нему можно доступ получить.
k1r1ch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где можно узнать о предстоящих компьютерных выставках в Питере Kn793 Свободное общение 1 01.12.2009 21:29
Как програмно можно узнать где находится программа Vol666 Общие вопросы Delphi 11 30.07.2009 20:58
Как узнать путь где щас мой exe zotox Помощь студентам 2 26.03.2009 23:38
Как сделать более точные координаты мышки xGroupers Общие вопросы Delphi 7 24.04.2008 23:02
Где узнать текущее разрешение экрана? Teksa Помощь студентам 2 07.09.2007 17:19