recursive.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 37 行

SCALA
37
字号
/* * The Computer Language Shootout * http://shootout.alioth.debian.org/ * * contributed by Andrei Formiga */object recursive{  def ack(x:int, y:int): int = if (x == 0) y + 1 			       else if (y == 0) ack(x - 1, 1) 			       else ack(x - 1, ack(x, y - 1))  def fib(n:int): int = if (n < 2) 1 else fib(n - 2) + fib(n - 1)    def fib(n:double): double = if (n < 2.0) 1.0 else fib(n - 2.0) + fib(n - 1.0)  def tak(x:int, y:int, z:int): int = if (y < x) tak(tak(x - 1, y, z),						     tak(y - 1, z, x),						     tak(z - 1, x, y))				      else z  def tak(x:double, y:double, z:double): double =     if (y < x)  tak(tak(x - 1.0, y, z), tak(y - 1.0, z, x), tak(z - 1.0, x, y))     else z  def main(args: Array[String]) = {    var n = Integer.parseInt(args(0))    Console.println("Ack(3," + n + "): " + ack(3, n))    Console.printf("Fib(%.1f): %.1f\n", (27.0+n), fib(27.0+n))    n = n - 1    Console.println("Tak(" + (3*n) + "," + (2*n) + "," + n + "): " + tak(3*n, 2*n, n))    Console.println("Fib(3): " + fib(3))    Console.println("Tak(3.0,2.0,1.0): " + tak(3.0,2.0,1.0))  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?