![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Aleksiusss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 10.3.2006 Репутация: нет Всего: нет |
Снова нужна помощь.
Создайте программу, которая вычисляет факториалы больших чисел. Указание: используйте класс BigInteger или BigDecimal для результата. С примитивными типами сделал ,а вот с BigInteger или BigDecimal что ,то не получается. Заранее большое спасибо. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nostromo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: 4 Всего: 10 |
Я, честно говоря, Java не знаю, но возник вопрос: неужели для преобразования int в BigInteger нет прямой функции и необходимо промежуточное преобразование в строку? Или BigInteger в Java через строки реализован?
--------------------
На пыльных тропинках далеких планет останутся наши следы. |
|||
|
||||
| Aleksiusss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 10.3.2006 Репутация: нет Всего: нет |
Пожайлуста объясните поподробнее, что и как здесь происходит. |
|||
|
||||
| DEER |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
как известно
n! = 1*2*3*..(n-1)*n или n! = (n-1)!*n тогда делаем программку
получается следующее: если текущее n меньше 2 те 1 или 0 то вернуть "1" - это терминальная ситуация(завершение входов в рекурсии и начало возврата к точке вызова) если текущее n больше 2, то мы просто умножаем значение n на факториал от n-1 как в формуле вверху Добавлено @ 10:56 блин не прочел условие
-------------------- |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Почему то для целых такой конструктор не предусмотрен, хотя для вещественных BigDecimal он есть. Не знаю почему, но данные храняться в массиве байт. Проверяем факториал какого числа надо посчитать. Если 1 или 0, то возвращаем единицу (по хорошему, надо добавить проверку что нам не дали отрицательное число). Если же чило больше или равно двум, то последовательно перемножаем все числа от двух до n. Числа BigInteger перемножаются не с помощью *, а с помощью метода multiply. С помощью new BigInteger(Integer.toString(i)) мы создаем новое число BigInteger равное текущему значению i. Это надо потому что BigInteger можно умножать только на другой BigInteger. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |