В тази програма ще се научите да намирате факториал на число, използващо цикъл for и while в Java.
За да разберете този пример, трябва да имате познанията по следните теми за програмиране на Java:
- Java за Loop
- 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
В тази програма сме използвали за цикъл за цикъл през всички числа между 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 loop. Това е така, защото броят на итерациите (до номер) е известен.
Посетете тази страница, за да се научите да намирате факториал на число, използвайки рекурсия.