kotlinで順列を再帰関数で計算する
kotlinには順列を得るライブラリが見当たらないので、再帰関数の練習がてら作ってみました。
const val NUM: Int = 3 // 列の数
val buffer = Array(NUM, { 0 })
val used = Array(NUM, { false })
fun main() {
permutation(NUM, 0)
}
fun permutation(n: Int, m: Int) {
if (n == m) {
for (i in 0..n - 1) {
print("${buffer[i]} ")
}
print("\n")
} else {
for (i in 0..n - 1) {
if (used[i] == true) {
continue
}
buffer[m] = i
used[i] = true
permutation(n, m + 1)
used[i] = false
}
}
}
・実行結果
0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
・再帰についてもっと深く勉強したい人にはこちらの本がお勧めです↓
(言語はC言語です)
・コーディングの腕試しがしてみたい人はこちらの本がお勧めです↓
(言語は主にRUBYです)