使用kotlin求组合
时间: 2023-07-11 13:09:31 浏览: 51
可以使用 Kotlin 的递归函数来求组合。以下是一个示例代码:
```kotlin
fun combine(n: Int, k: Int): List<List<Int>> {
val result = mutableListOf<List<Int>>()
val curr = mutableListOf<Int>()
combineHelper(n, k, 1, curr, result)
return result
}
fun combineHelper(n: Int, k: Int, start: Int, curr: MutableList<Int>, result: MutableList<List<Int>>) {
if (curr.size == k) {
result.add(curr.toList())
return
}
for (i in start..n) {
curr.add(i)
combineHelper(n, k, i + 1, curr, result)
curr.removeAt(curr.lastIndex)
}
}
```
在这个示例中,`combine` 函数接收两个参数 `n` 和 `k`,分别表示从 `n` 个数中选取 `k` 个数进行组合。它首先创建一个空的列表 `result`,然后调用 `combineHelper` 函数来生成所有可能的组合,并将它们添加到 `result` 列表中。最后,`combine` 函数返回 `result` 列表。
`combineHelper` 函数是递归函数,它接收五个参数:`n`,`k`,`start`,`curr` 和 `result`。其中,`n` 和 `k` 的含义与 `combine` 函数相同。`start` 参数表示当前循环应该从哪个数开始选取。`curr` 参数表示当前已经选取的数的列表。`result` 参数表示最终的组合列表。
在 `combineHelper` 函数中,如果当前已经选取了 `k` 个数,那么将当前的列表 `curr` 添加到 `result` 列表中,并返回。否则,从 `start` 开始循环,将每个数依次添加到 `curr` 列表中,并递归调用 `combineHelper` 函数,继续选取下一个数。当递归返回时,将刚刚添加的数从 `curr` 列表中删除,以便进行下一次循环。