![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 01.11.2011
Сообщений: 43
|
![]() Код:
- максимальный факториал у всех функций 33 считается неправильно, да и другие( не все конечно, но всё же ) неправильно. -factorial_1 и factorial_2 должны считать " дальше ", не так ли? |
![]() |
![]() |
![]() |
#2 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
![]() |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 01.11.2011
Сообщений: 43
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]()
Ага, особенно 33! = 86833176188118864955181944012800000 00.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
![]()
Ну почему же int, используйте double и вы сможете считать факториалы чисел вплоть до 170! . Конечно тогда придется учесть т.н. защиту от дурака. А еще почитайте на википедии статью о факториалах, там вроде помню выводили формулу, в которую просто подставляешь число и получаешь факториал. Я ее даже проверял в программе. Но ошибку она дает куда большую, чем первая фунция в этом коде, зато и числа по-моему больше 170! считает.
Кстати на правильность наверное не стоит грешить, машина не может считать факториалы (ровно как и все остальное) с точностью до верного. С очень большими и очень маленькими числами всегда возникают проблемы, это связано с представлением числа в машине. Попробуйте, к примеру, в типе float от числа 123456789 отнять число 123456788 - машина ответит: 8. В double такой проблемы не возникнет, но возникнет с числом еще большим этого.
Повторенье - мать ученья. И прибежище для лентяев.
Последний раз редактировалось Stilet; 09.07.2012 в 14:28. |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]() Код:
Тут нужно использовать длинную арифметику, если хотите получить точные результаты Если нужны приблизительные значения, то long double или double подойдут Код:
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
![]()
long double? ого...
Повторенье - мать ученья. И прибежище для лентяев.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсии | fre | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 03.04.2012 09:59 |
Пмощь в рекурсии. | KOPC1886 | Помощь студентам | 0 | 27.11.2010 13:36 |
Рекурсии | RAMA | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 18.10.2009 13:56 |
Рекурсии в pascal | Nogard | Помощь студентам | 1 | 22.06.2009 12:08 |
Рекурсии | Logan | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.05.2008 08:52 |