Програма Kotlin за намиране на факториал на число

В тази програма ще се научите да намирате факториал на число, използващо цикъл for и while в Kotlin. Също така ще се научите да използвате диапазони за решаване на този проблем.

Факториалът на положително число n се дава от:

 факториал на n (n!) = 1 * 2 * 3 * 4 * … * n 

Пример 1: Намерете факториал на число, използвайки цикъл for

 fun main(args: Array) ( val num = 10 var factorial: Long = 1 for (i in 1… num) ( // factorial = factorial * i; factorial *= i.toLong() ) println("Factorial of $num = $factorial") )

Когато стартирате програмата, изходът ще бъде:

 Факториал на 10 = 3628800

В тази програма сме използвали за цикъл за цикъл през всички числа между 1 и дадено число num (10) и произведението на всяко число до num се съхранява в променлива факториал.

За разлика от Java, в Kotlin можете да използвате диапазони ( 1… num) и in оператор, за да преминете през числа между 1 до num.

Също така използвахме long вместо int, за да съхраняваме големи резултати от факториал.

Въпреки това, той все още не е достатъчно голям, за да съхранява стойността на по-големи числа (да речем 100). За резултати, които не могат да се съхраняват в дълга променлива, използваме BigIntegerпроменлива, декларирана в java.mathбиблиотека.

Ето еквивалентния Java код: Java програма за намиране на факториал на число.

Пример 2: Намерете факториал на число с помощта на BigInteger

 import java.math.BigInteger fun main(args: Array) ( val num = 30 var factorial = BigInteger.ONE for (i in 1… num) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(num.toLong())) ) println("Factorial of $num = $factorial") )

Когато стартирате програмата, изходът ще бъде:

 Факториал от 30 = 20589113209464900000000000000000000000000000000

Тук вместо longизползваме BigIntegerфакториал с променлива.

Тъй като *не може да се използва с BigInteger, вместо това използваме multiply()за продукта. Също така, числото трябва да бъде излято BigIntegerза умножение.

По същия начин можем да използваме цикъл while, за да разрешим този проблем.

Пример 3: Намерете факториал на число с помощта на цикъл while

 fun main(args: Array) ( val num = 5 var i = 1 var factorial: Long = 1 while (i <= num) ( factorial *= i.toLong() i++ ) println("Factorial of $num = $factorial") )

Когато стартирате програмата, изходът ще бъде:

 Факториал на 5 = 120

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

Въпреки че и двете програми са технически правилни, в този случай е по-добре да използвате for loop. Това е така, защото броят на итерациите (до номер) е известен.

Посетете тази страница, за да се научите да намирате факториал на число, използвайки рекурсия.

Интересни статии...