Математический форум Math Help Planet
Обсуждение и решение задач по математике, физике, химии, экономике Теоретический раздел |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
новый онлайн-сервис число, сумма и дата прописью |
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Страница 2 из 3 |
[ Сообщений: 25 ] | На страницу Пред. 1, 2, 3 След. |
|
Автор | Сообщение | |
---|---|---|
Booker48 |
|
|
|
||
Вернуться к началу | ||
За это сообщение пользователю Booker48 "Спасибо" сказали: _Sasha_ |
||
Gagarin |
|
|
_Sasha_ писал(а): [math]\left( a+b \right)^n=\sum\limits_{k=0}^{n} C_{n}^{k}\,a^k\,b^{n-k}[/math] (как эта формула точно называется не помню. Кажется, "формула Бернулли для многочлена"). _Sasha_ Вообще-то это формула бинома Ньютона. |
||
Вернуться к началу | ||
taras |
|
|
Вот только рекурсии в виде дерева мне и не хватало. Стек вообще то принято экономить.
|
||
Вернуться к началу | ||
Booker48 |
|
|
Ну так экономьте, вам что-то мешает?
Посмотрите в вики статью "Биномиальный коэффициент". Там асимптотики и оценки даны. Из них следует, что число сочетаний растёт очень быстро с ростом N. Так что нужно для начала определиться, для каких значений вы будете писать программу. Если N должно быть в пределах, допустим, 40-50, то, возможно, имеет смысл заполнять массив (последовательно, с помощью вышеприведённой рекуррентной формулы). Далее определитесь с типом данных. Длинного целого может не хватить даже для N = 100. |
||
Вернуться к началу | ||
_Sasha_ |
|
|
taras писал(а): Вот только рекурсии в виде дерева мне и не хватало. Стек вообще то принято экономить. Не всегда. Некоторые задачи решаются только с помощью рекурсии. Мои, записанные формулы - это рекрсии в математике (не нравится такое название, их можно назвать по-другому: "рекурентные соотношения"). А если даны рекурсивные формулы в математике, то их можно программировать не только с помощью рекурсии, но и с помощью цикла. Программа на Delphi (Паскале), если Вы на нём пишите, будет примерно выглядеть следующим образом. Раздел описания. const Maxn=100; {для какого n Вы находите числа сочетаний из n элементов} var OldListOfSochetanija:array [0..Maxn] of Real; NewListOfSochetanija:array [0..Maxn] of Real; {В m элементе массива NewListOfSochetanija хранится число сочетаний из n элементов по m элементов. Тип чисел выбирается, как Вам удобно. Я выбрал мне известный тип данных, в котором можно хранить очень-очень большие числа (он не обязательно должен быть целым типом)} n,n:Integer; Часть раздела операторов будет выглядеть следующим образом. NewListOfSochetanija[0]:=1; {Начальная инициализация} for n:=1 to Maxn do begin 1. Элементам массива OldListOfSochetanija присваиваете значения соответствующих элементов массива NewListOfSochetanija; 2. Элементам массива NewListOfSochetanija присваиваете значения числа сочетантий из n элементов по m, используя мною приведённые рекурсивные (рекурентные) формулы, и значения сочетантий из n-1 элемента по m, которые хранятся в массиве OldListOfSochetanija end; |
||
Вернуться к началу | ||
taras |
|
|
_Sasha_ писал(а): taras писал(а): Вот только рекурсии в виде дерева мне и не хватало. Стек вообще то принято экономить. Не всегда. _Sasha_ писал(а): taras писал(а): Некоторые задачи решаются только с помощью рекурсии.: |
||
Вернуться к началу | ||
taras |
|
|
_Sasha_ писал(а): Мои, записанные формулы - это рекрсии в математике (не нравится такое название, их можно назвать по-другому: "рекурентные соотношения"). А если даны рекурсивные формулы в математике, то их можно программировать не только с помощью рекурсии, но и с помощью цикла. И как Вы себе представляете циклическую реализацию одновременно обеих этих формул? |
||
Вернуться к началу | ||
taras |
|
|
_Sasha_ писал(а): OldListOfSochetanija:array [0..Maxn] of Real; Ещё смешней. Массивы давно не принято резервировать. Если размер массива известен на этапе разработки, он объявляется именно такого размера, если не известен - должен быть динамическим. Тем более этот массив локальный и располагается тоже на стеке.Последний раз редактировалось taras 22 апр 2017, 17:28, всего редактировалось 1 раз. |
||
Вернуться к началу | ||
taras |
|
|
_Sasha_ писал(а): Я выбрал мне известный тип данных, в котором можно хранить очень-очень большие числа (он не обязательно должен быть целым типом)} Обязательно. Потому что большие числа real хранит с потерей точности. Так что реально даже DWORD лучше. |
||
Вернуться к началу | ||
_Sasha_ |
|
|
taras писал(а): Ещё смешней. Массивы давно не принято резервировать. Если размер массива известен на этапе разработки, он объявляется именно такого размера, если не известен - должен быть динамическим. Ой, простите, зачем я вообще влез. Я Вам хотел помочь с решением математической задачи. А как Вам программировать, я Вас и не собирался учить. Если Вы поняли, что я Вам хотел сказать, то напишите компьютерную программу лучше, чем я написал. И учите дискретную математику. Пригодится. |
||
Вернуться к началу | ||
На страницу Пред. 1, 2, 3 След. | [ Сообщений: 25 ] |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |