Kotlinでは関数にtailrec宣言を付けることによって、末尾再帰最適化がされる(一部制限があるようですが)!とのことなので、早速やってみます。
何はともあれ、フィボナッチ数。
とりあえず、それっぽく動作していることは確認できた。その2に続く〜
何はともあれ、フィボナッチ数。
末尾再帰でフィボナッチ数
fibonacci.ktfun main(args: Array<String>) { println(fibonacci(Integer.parseInt(args[0]))) } fun fibonacci(n: Int): List<Int> = if (n <= 1) listOf(1) else fibonacci0(n, listOf(1, 1)) tailrec fun fibonacci0(n: Int, list: List<Int>): List<Int> = if (list.size >= n) list else fibonacci0(n, list.plus(list.takeLast(2).sum()))
$ kotlinc -version info: kotlinc-jvm 1.3.11 (JRE 1.8.0_92-b14) $ kotlinc fibonacci.kt -include-runtime -d fibonacci.jar $ java -jar fibonacci.jar 5 [1, 1, 2, 3, 5]
とりあえず、それっぽく動作していることは確認できた。その2に続く〜
0 件のコメント:
コメントを投稿