Въведение в Factorial в Java

В тази статия ще научим за различни начини за писане на код в езика за програмиране на Java, за целите на Факторните изчисления.

Като един от лесните за използване, обектно-ориентиран език, Java, е независим от платформата и прост език за програмиране. Компилаторът и преводачът на Java са разработени със сигурност като основен аспект. Java има различни приложения.

Факторно, символизирано като "!" (Удивителен знак), е математическа операция за умножаване на число с всички числа, които са по-малки от него. Например, ако числото е 5, изходът за факториал ще бъде 5! = 5 * 4 * 3 * 2 * 1 = 120.

Как да изпълните Java програма?

1. Попълнете вашия код и го запазете като (име на файл) .java

2. Отворете терминала и изпълнете следната команда java.

  • а. javac (име на файл) .java

3. Горната команда ще генерира файл от класа.

4. Сега изпълнете файла клас.

  • а. java (име на файл)

Изчисляване на Factorial с помощта на различни методи

Пример 1 - Факторна програма в Java, използвайки основния метод

Движейки се напред, сега ще напишем проста програма за Java за факторно изчисление.

public class Factorial
(
public static void main(String args())
(int i, fact=1;
int number=5;
for(i=1;i<=number;i++)
(
fact=fact*i;
)
System.out.println("Factorial of "+number+" is: "+fact);
)
)

Запазете горния код с всяко име на файл и разширение .java.

Обяснение на кода:

Започваме с две променливи „i“ и „факт“, със стойност 1, след това „число“ с 5, което е нашето число за изчисляване на фактологичното. Влязохте в For Loop, продължиха да увеличават стойността на i, докато не го съпоставим с числото, т.е. 5. Докато увеличаваме, всеки път, когато стойността на факта се увеличава, тя се умножава и на факта се присвоява нова стойност.

Резултат :

Пример 2 - Факторна програма в Java, използваща User Input

Друг често използван метод е, когато искаме потребителски номер за въвеждане, за изчисление, вместо предварително да го дефинираме.

Обърнете се към кода по-долу за изчисление, основано на потребителски вход:

import java.util.Scanner;
class Facto(
public static void main(String args()) (
int q, a, fact = 1;
System.out.println("Please Enter a number:");
Scanner in = new Scanner(System.in);
q = in.nextInt();
if ( q < 0 )
System.out.println("Please enter a number greater than 0:");
else (
for ( a = 1 ; a <= q ; a++ )
fact = fact*a;
System.out.println("Factorial of "+q+" is = "+fact);
)
)
)

Запазете горния код, както направихме за предишния пример.

Обяснение на кода:

Основна разлика между по-ранния и по-горе пример е въвеждането от потребителя, Останалото е същото. Кодът ще поиска да се изчисли число, тогава ако въведеният от потребителя номер е отрицателен, който е в „-”, минус, той ще подкани „Моля, въведете число, по-голямо от 0:”, което е очевидно, тъй като Factorial не може да бъде изчислено за отрицателен номер. Сега той ще приеме положително число и ще продължи с изчисляването на фактор и след това ще отпечата изхода, както е показано на изображението по-долу.

Резултат :

Пример 3 - Факторна програма в Java, използвайки метод на рекурсия

Рекурсията е един от най-полезните инструменти в света на програмирането. Рекурсия основно означава повторна употреба на функцията. Така че да се каже, тук няма да се налага да определяме допълнителен брой променливи, което означава, че ще имаме само две променливи или по-малко.

Основна причина за прилагане на рекурсия е силата да се намали дължината на кода и елегантно да се намали времевата сложност на програмата. Рекурсионният метод с неговите предимства има няколко недостатъка, които биха могли да окажат голямо влияние в дългосрочен план.

Недостатъци

Недостатъци с рекурсия:

  • По принцип е доста трудно да отстраните грешката в рекурсионния код и да го проследите за всяка стъпка с грешка.
  • Освен това, рекурсията използва повече памет, тъй като използва Stack за изпълнение на задачата, където продължава да добавя стека с по-нов рекурсивен разговор.
  • И ако не се приложи разумно, рекурсията може да забави функцията.
  • StackOverflowException: Рекурсивните методи често изхвърлят това изключение поради прекомерната употреба на стека.

Вижте кода по-долу:

public class FactorialExample2 (
static int factorial(int n)(
if (n == 1)
return 1;
else
return(n * factorial(n-1));
)
public static void main(String() args) (
System.out.println("Factorial of 5 is: "+factorial(5));
)
)

Запазете и компилирайте програмата, както направихме по-рано.

Обяснение на кода:

Кодът по-горе започва с единична променлива int, проверява дали е равен на 1, ако да, тогава той връща една, тъй като фактор за 1 е 1. Ако не е равен на 1, той продължава с рекурсионна функция. Нашата стойност на int, например, е 5, така че ще бъде като "5 * факториален (5-1)", тук за втори път се извиква факториал, което е още едно повикване. След това се връща отново с по-нова int стойност, която е 4, „4 * фактория (4-1)“, сега това ще бъде третото повикване на метода на рекурсия. Сега, по-новата стойност на int е 3, което означава „3 * фактория (3-1)“, сега тя ще бъде четвъртото повикване, а стойността ще бъде 2, което означава „2 * факториално (2-1)“. В следващия рекурсивен разговор стойността на int ще бъде една, което ще прекрати функцията тук. Докато всеки разговор беше направен, стойността му беше запазена в стек, който е метод LIFO. Така че за крайния изход резултатът ще бъде „5 * 4 * 3 * 2 * 1 = 120“

В сравнение с други методи, Рекурсията е доста трудна за разбиране и изпълнение, но ако е разбрана добре и се прилага разумно, тя е добро средство.

Резултат :

Силно препоръчително е да използвате рекурсия, само в случай, когато писането на итеративен код може да бъде доста сложно.

Сега, след като научихме различни методи за внедряване на факторни изчисления в Java, нека да изследваме вградена функция, която върши същата работа, в един ред.

Пример 4 - Факторна програма в Java, използваща вградена функция

*) IntMath

Разбирайки необходимостта от аритметични операции над стойност, бяха написани няколко функции, специфични за определени типове стойности, ще видим стойността на типа Integer в работата.

IntMath е клас за аритметични изчисления на int стойност. Класът IntMath се предлага с редица аритметични операции, включително факторни.

Синтаксис :

factorial (int n)

Заключение - Factorial в Java

Започнахме с въведение в java и как да стартираме java програма. Тогава научихме за факторното изчисление и различни методи, включително рекурсия, за да го изпълним.

Към края научихме за IntMath, Java функция, фокусирана основно върху аритметичните операции. Java е широко използван език за програмиране, той предлага много функции, в тази статия научихме за Факторните изчисления в Java, което е мъничък аспект.

Препоръчителни статии

Това е ръководство за Factorial в Java. Тук обсъждаме как да изпълним java програма, заедно с нейните методи. Можете също да разгледате следните статии, за да научите повече-

  1. Тестване на рамки за Java
  2. Жизнен цикъл на нишката в Java
  3. Променливи в Java
  4. Анотации на Java
  5. Масиви в Java програмиране
  6. Фактор в C #