Kotlin程序查找數(shù)字的階乘

Kotlin 實(shí)例大全

在此程序中,您將學(xué)習(xí)在Kotlin中使用for和while循環(huán)查找數(shù)字的階乘。您還將學(xué)習(xí)使用 range 來(lái)解決此問(wèn)題。

正數(shù)的階乘由下式n給出:

factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n

示例1:使用for循環(huán)查找數(shù)字的階乘

fun main(args: Array<String>) {

    val num = 10
    var factorial: Long = 1
    for (i in 1..num) {
        // factorial = factorial * i;
        factorial *= i.toLong()
    }
    println("$num 的階乘 = $factorial")
}

運(yùn)行該程序時(shí),輸出為:

10 的階乘 = 3628800

在此程序中,我們使用循環(huán)來(lái)循環(huán)遍歷1至給定數(shù)字num(10)之間的所有數(shù)字,將每個(gè)數(shù)字的相乘直到num,并存儲(chǔ)在變量 factorial 中。

與Java不同,在Kotlin中,您可以使用range(1..num)和in 運(yùn)算符在1到num 之間的數(shù)字之間循環(huán)。

同樣,我們使用long而不是int,是為了存儲(chǔ)數(shù)字較大的階乘結(jié)果。

但是,它有可能仍然不足以存儲(chǔ)較大數(shù)字的值(例如1...100)。對(duì)于不能存儲(chǔ)在 long 變量中的結(jié)果,我們使用在java.math庫(kù)中聲明的 BigInteger 變量。

這是等效的Java代碼:查找數(shù)字階乘的Java程序。

示例2:使用BigInteger查找數(shù)字的階乘

import java.math.BigInteger

fun main(args: Array<String>) {

    val num = 30
    var factorial = BigInteger.ONE
    for (i in 1..num) {
        // factorial = factorial * i;
        factorial = factorial.multiply(BigInteger.valueOf(num.toLong()))
    }
    println("$num 的階乘  = $factorial")
}

運(yùn)行該程序時(shí),輸出為:

30 的階乘  = 205891132094649000000000000000000000000000000

這里,我們用BigInteger變量的階乘代替long。

由于 * 運(yùn)算符不能與BigInteger一起使用,我們對(duì)乘積使用multiply()。另外,num應(yīng)該被轉(zhuǎn)換為BigInteger以進(jìn)行乘法運(yùn)算。

同樣,我們也可以使用while循環(huán)來(lái)解決此問(wèn)題。

示例3:使用while循環(huán)查找數(shù)字的階乘

fun main(args: Array<String>) {

    val num = 5
    var i = 1
    var factorial: Long = 1
    while (i <= num) {
        factorial *= i.toLong()
        i++
    }
    println("$num的階乘   = $factorial")
}

運(yùn)行該程序時(shí),輸出為:

5 的階乘  = 120

在上面的程序中,與for循環(huán)不同,我們必須增加循環(huán)體內(nèi) i 的值。

盡管兩個(gè)程序在技術(shù)上都是正確的,但在這種情況下最好使用for循環(huán)。這是因?yàn)榈螖?shù)(最大為num)是已知的。

Kotlin 實(shí)例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清