У цій програмі ви навчитеся знаходити факторіал числа, використовуючи цикл for і while у Java.
Щоб зрозуміти цей приклад, ви повинні знати такі теми програмування Java:
- Java для циклу
- Java в той час як і робити … в той час як Loop
Факториал додатного числа n задається:
факторіал n (n!) = 1 * 2 * 3 * 4 * … * n
Приклад 1: Знайти факторіал числа за допомогою циклу for
public class Factorial ( public static void main(String() args) ( int num = 10; long factorial = 1; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial *= i; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Вихідні дані
Факториал 10 = 3628800
У цій програмі ми використовували цикл for, щоб прокрутити всі числа від 1 до заданого числа num (10), і добуток кожного числа до num зберігається у змінному факторіалі.
Ми використовували long замість int, щоб зберігати великі результати факторіалу. Однак він все ще недостатньо великий, щоб зберігати значення більших чисел (скажімо 100).
Для результатів, які неможливо зберегти у довгій змінній, ми використовуємо BigInteger
змінну, оголошену в java.math
бібліотеці.
Приклад 2: Знайдіть факторіал числа за допомогою BigInteger
import java.math.BigInteger; public class Factorial ( public static void main(String() args) ( int num = 30; BigInteger factorial = BigInteger.ONE; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(i)); ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Вихідні дані
Факториал 30 = 265252859812191058636308480000000
Тут замість long
ми використовуємо BigInteger
змінну факторіал.
Оскільки, *
не може використовуватися з BigInteger
, ми замість цього використовуємо multiply()
для продукту. Крім того, число потрібно відливати BigInteger
для множення.
Так само ми можемо використовувати цикл while для вирішення цієї проблеми.
Приклад 3: Знайти факторіал числа за допомогою циклу while
public class Factorial ( public static void main(String() args) ( int num = 5, i = 1; long factorial = 1; while(i <= num) ( factorial *= i; i++; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Вихідні дані
Факториал 5 = 120
У наведеній вище програмі, на відміну від циклу for, ми повинні збільшити значення i всередині тіла циклу.
Хоча обидві програми технічно правильні, в цьому випадку краще використовувати цикл for. Це тому, що відома кількість ітерацій (до числа).
Відвідайте цю сторінку, щоб навчитися знаходити факторіал числа за допомогою рекурсії.