情報の海の羅針盤byまっくす

情報の海の羅針盤 byまっくす

PCやスマホやタブレットを楽しむヒントを書いていきます

kotlinで順列を再帰関数で計算する

f:id:maxheadroom20:20201020142537j:plain

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 (== m) {
        for (in 0..- 1) {
            print("${buffer[i]} ")
        }
        print("\n")
    } else {
        for (in 0..- 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 
 
再帰についてもっと深く勉強したい人にはこちらの本がお勧めです↓
(言語はC言語です)
再帰の技法??基本的考え方・アルゴリズム・プログラミング

再帰の技法??基本的考え方・アルゴリズム・プログラミング

  • 作者:玉井 浩
  • 発売日: 2006/11/16
  • メディア: 単行本(ソフトカバー)
 

 

・コーディングの腕試しがしてみたい人はこちらの本がお勧めです↓
(言語は主にRUBYです)