我有一个元素的ArrayList,需要获取成对组合的元素。
例如:[A, B, C]
将被转换为 [[A, B], [A, C], [B, C]]
我目前使用传统的方式来实现此目的。
for(i in 0 until arr.size-1)
for(j in i+1 until arr.size)
//do stuff with arr[i], arr[j]
如果需要组合超过两个元素,我可能会编写递归函数来完成相同的操作。我的担忧是这种方法还是有点老派,可能不太像Kotlin函数式编程风格。
是否有更好的方式来实现这一点,同时还可以使组合数更多而不用进入递归?
tailrec
优化递归函数,而不会出现堆栈溢出的风险。详情请参见 https://kotlinlang.org/docs/reference/functions.html - Nikolai Shevchenko