2015年8月16日日曜日

開発環境

Learning Scala: Practical Functional Programming for the JVM (Jason Swartz (著)、O'Reilly Media)のPart Ⅰ. (Core Scala)、Chapter 4.(Functions)、Exercises 5.(No. 1471)を解いてみる。

その他参考書籍

Exercises 5.(No. 1471)

コード(Emacs)

def pow1(a:Double, b:Double): Double = math.pow(a, b)
def pow2(a:Double, b:Int): Double = {
  if (b == 0) 1
  else a * pow2(a, b - 1)
}
def pow3(a:Double, b:Int): Double = {
  @annotation.tailrec
  def inner(n:Int, result:Double):Double = {
    if (n == 0) result
    else inner(n - 1, result * a)
  }
  inner(b, 1)
}
def pow4(a:Double, b:Int): Double = {
  var result: Double = 1
  for (i <- 1 to b) {
    result *= a
  }
  result
}
println(pow1(2, 10))
println(pow2(2, 10))
println(pow3(2, 10))
println(pow4(2, 10))

入出力結果(Terminal, REPL(Read, Eval, Print, Loop))

$ scala-2.11 sample5.scala
1024.0
1024.0
1024.0
1024.0
$

0 コメント:

コメントを投稿