Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192

Класс для вычисления факториала до 20! Как задать условие

21.12.2017, 23:03. Показов 1689. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброй ночи. Наступаю на те же грабли::
-Метод есть, условие присобачить не могу.

Как ввести: например вычислить факториал 7.

Ниже готовый класс с методом решения:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*Этот клас вычисляет факториал и кэширует результат в таблице для дальнейшего употребления
 *20!-самый большой факториал для типа Long 
 *поэтому должна быть проверка аргумента на величину с исключениями*/
 
 
public class Pr_1_7_factorial3 {
 
        static long [] table = new long [21]; /*Создаем массив для хранения фактор-в от0! до 20!
                                               Первая половина строки - обьявляет статическое поле table
                                               которая будет массивом значений типа long
                                               вторая поовина создает массив из 21 значения 
                                               при помощи оператора new...*/
        
        static {table [0]=1;}                 //Инициализируем первый элемент массива
                                              // !0=1
        static int last =0;                   //Запоминаем номер последнего вычисленного фактор-ла
        
        public static long factorial(int x) throws IllegalArgumentException {
                                             // Проверяем величину Х. Выдаем исключение  
            
            if (x>=table.length)             //length - возвращает длину любого массива
            throw new IllegalArgumentException ("Переполнение: Х слишком велик!!");
            if (x<table.length)         
            throw new IllegalArgumentException ( "Х должен быть больше 0!!");
            
            while (last < x) {
                table [last+1]=    table [last]*(last+1);      //Вычисляем и кэшируем все пока еще не сохраненные данные
                last ++;
            }
            
            
            return table[x] ;
            
    }
 
}
iSmokeJC, заранее спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2017, 23:03
Ответы с готовыми решениями:

Как задать условие для функции
Добрый вечер! Например есть double Psi(double x) Нужно чтобы функция возвращала x при 0\leq x \leq 1\ , 2-x при 1\leq x \leq 2\ и 0 в...

Как задать условие для кнопки?
&quot;Если поле в edittext пустое = button не активен(нельзя нажать)&quot;

Как задать условие для переменной?
Доброго дня уважаемые форумчане. Подскажите пожалуйста возможно ли задать условие наподобие If ssil Is Nothing Or ssil Is Empty Then Дело в...

11
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.12.2017, 23:33
Лучший ответ Сообщение было отмечено Сергей_СПб как решение

Решение

Ты мне льстишь..
Во-первых
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
if (x<table.length)
че за маразм? ставь (x < 1)
Ну и в методе main -
Java
1
System.out.println(Pr_1_7_factorial3.factorial(15));
Добавлено через 57 секунд
Ну, вместо 15 - что тебе надо...

Добавлено через 1 минуту
И класс переименуй как-нибудь поприличней, Fact хотя бы
1
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
22.12.2017, 09:43  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Ты мне льстишь..
Ты не понял, это было заклинание на удачу
перед охотой
0
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
22.12.2017, 09:48
Сергей_СПб, чем вам BigInteger не мил?
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
22.12.2017, 13:06  [ТС]
Aviz__, Как раз разбираюсь с этой темой. Добью-выложу. Вдруг ещё кому понадобится
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
23.12.2017, 18:36  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
чем вам BigInteger не мил?
А он прикольный
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.*;
import java.math.BigInteger;
 
public class Pr_1_7_factorial4 {
    
    
    protected static ArrayList table = new ArrayList(); //Создается кэш в oбьекте ArrayList
                                        //похож на массив, но может разрастаться до любого размера
    static {table.add(BigInteger.valueOf(1));}          // Создаем кэш, инициализируем первый элемент - 1
                                    
                             /* Метод factorial()  использующий обьекты  BigInteger,
                              * сохраняемые в ArrayList*/
    
    public static synchronized BigInteger factorial (int x) {
        if (x<1)            
            throw new IllegalArgumentException ( "Х должен быть больше 0!!");
    for(int size = table.size(); size<=x; size ++)
    {   
    BigInteger lastfact = (BigInteger)table.get(size-1);
    BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(size));
    table.add(nextfact);
    }
        
    return (BigInteger) table.get(x);   
        
    }
    
 
    public static void main(String[] args) {
        for (int i=5; i<=50; i++)
            System.out.println (i+"!="+ factorial(i));
        
    }
    
    
 
}
И даже понятный
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.12.2017, 18:42
Java
1
System.out.printf("! %d = %d\n", i, factorial(i));
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
23.12.2017, 18:46  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
printf("! %d = %d\n"
Я так понял что это тоже самое, только для любителей С++
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.12.2017, 18:48
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
только для любителей С++
отнюдь!
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
23.12.2017, 19:10  [ТС]
iSmokeJC, , главное разобрался как это называется, то что я все допытывался

- протестировать программу
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.12.2017, 19:17
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
протестировать программу
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
23.12.2017, 19:22  [ТС]
Вопрос примерно звучал так:
Есть какой-нибуть общий принцип разделения файла с условием и файлом с самой функцией.
Где почитать, или как правильно сформулировать??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2017, 19:22
Помогаю со студенческими работами здесь

Как задать условие выбора для EventTrigger?
Есть Image со стилем, который розмещен на `MyControl : UserControl`, в `MyControl` есть свойство `IsSelected`. &lt;Image.Style&gt; ...

Как задать начальное условие для переменной-массива в NMinimize?
Уважаемые участники форума! Решаю многомерную задачу оптимизации и хочу передать в NMinimize в качестве переменной массив, но у меня...

Как задать условие для подсчета суммы элементов массива с парным индексом
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int a,b,c; printf(&quot;vvedit a:&quot;); scanf(&quot;%d&quot;,&amp;a); ...

Функция для вычисления факториала
определить функцию вычисления факториала числа. Рассчитать с помощью нее: 2x5! + 3x9! \ 7! +10! помогите пожалуйста с программой в С++ ...

Цикл для вычисления факториала
Подскажите написать цыкл для вычисления факториала с основанием не четных чисел. Пример через рекрусивную фукцию: function fact...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru