Anm*_*tam 3 loops factorial kotlin
凭借java编程经验,我今天开始学习Kotlin.我正在玩这种语言,发现我坚持for
在kotlin中找到一个使用循环的阶乘.我设法使用while
循环来做到这一点.
import java.util.Scanner
fun main(args: Array<String>){
val reader=Scanner(System.`in`)
val x: Int = reader.nextInt()
println(factorial(x))
}
fun factorial(a: Int): Int{
var ans=1
var i: Int = a
while(i>1){
ans*=i
i--
}
return ans
}
Run Code Online (Sandbox Code Playgroud)
请帮我用for
循环来做这件事.
谢谢
Ale*_*nov 11
嗯,最简单的一个想到的:
fun factorial(num: Int): Long {
var result = 1L
for (i in 2..num) result *= i
return result
}
Run Code Online (Sandbox Code Playgroud)
这不使用 for 循环,但作为补充,您还可以使用以下命令使其更短、更实用且类似于 Kotlin reduce
:
fun factorial(num: Int) = (1..num).reduce(Int::times)
Run Code Online (Sandbox Code Playgroud)
或者:
fun factorial(num: Int) = (1..num).reduce { a, b -> a * b }
Run Code Online (Sandbox Code Playgroud)
这是我能想到的最简单的。
编辑:这相当于
fun factorial(num: Int) = (2..num).fold(1, Int::times)
Run Code Online (Sandbox Code Playgroud)
作为reduce
实际上是一个fold
在索引0处从值开始。
我们从 2 开始,但是 1 将等同于乘以 1 不会改变结果。
编辑2:此编辑正是holi-java 刚刚发布的内容。
归档时间: |
|
查看次数: |
1005 次 |
最近记录: |