Kotlin中表或数组的乘积

jgwigjjp  于 2022-12-30  发布在  Kotlin
关注(0)|答案(5)|浏览(115)

我试图找到一种方法来获得一个列表或数组的乘积,而不使用“重复”或任何循环的Kotlin,但经过一些研究,我找不到任何类似的。
在Python中类似这样的代码是:

>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
output: 720
68de4m5k

68de4m5k1#

使用foldreduce函数。两个都可以。

val array = arrayOf(1, 2, 3, 4, 5, 6)
    println("Product of list: ${listOfMultiplication(array)}")
    fun listOfMultiplication(array: Array<Int>): Int {
        return array.reduce { total, next ->  total * next }
    }
val array = arrayOf(1, 2, 3, 4, 5, 6)
    println("Product of list: ${listOfMultiplication(array)}")
    fun listOfMultiplication(array: Array<Int>): Int {
        return array.fold(1) { total, next -> total * next }
    }
js4nwp54

js4nwp542#

您可以在Kotlin中使用reduce
来自文档:
从第一个元素开始累加值,并从左到右对当前累加器值和每个元素应用运算。

val list = listOf<Int>(1, 2, 3, 4, 5, 6)

val array = intArrayOf(1, 2, 3, 4, 5, 6)

list.reduce { acc, i ->  acc * i }  // returns 720

array.reduce { acc, i -> acc * i }  // returns 720
bjp0bcyl

bjp0bcyl3#

更简单的解决方案可能是:第一个月

syqv5f0l

syqv5f0l4#

使用fold函数

val total = listOf(1, 2, 3, 4, 5).fold(1, { total, next -> total * next })
g2ieeal7

g2ieeal75#

希望这能有所帮助:

fun main(args: Array<String>){
   val array = intArrayOf(1, 2, 3, 4, 5, 6)
   val product = array.fold(1){acc, i -> acc * i}
   println("The result is: $product")
}

这将输出数组的乘积。

相关问题