У цій програмі ви навчитеся знаходити факторіал числа, використовуючи цикл 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
У цій програмі ми використовували цикл for, щоб прокрутити всі числа від 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. Це тому, що відома кількість ітерацій (до числа).
Відвідайте цю сторінку, щоб навчитися знаходити факторіал числа за допомогою рекурсії.