小编Sac*_*n K的帖子

erlang vs jvm(scala)递归性能

作为学习scala和函数式编程的练习,我实现了以下非尾递归def,用于计算任何位置的pascal数.程序本身作为pascal三角形的定义.它看起来如下图

      1
    1  1
   1  2  1
  1 3   3 1
 1 4  6  4 1
1 5 10 10 5 1
...

def pascal(c: Int, r: Int): Int =
  if (c == 0 || c == r) 1 else pascal(c - 1, r - 1) + pascal(c, r - 1)
Run Code Online (Sandbox Code Playgroud)

但是,当尝试pascal(25,50)在Mac OS X 10.6.8(2.53 GHz Intel Core 2 Duo)上运行时,它仍然在20分钟后仍未运行.

为了与erlang进行比较,我安装了R15B02并编写了如下的等效程序:

-module(pascal).
-export([calc_pascal/2]).

calc_pascal(0,_) -> 1;
calc_pascal(C,R) when C==R -> 1;
calc_pascal(C,R) when C<R …
Run Code Online (Sandbox Code Playgroud)

erlang recursion performance jvm scala

5
推荐指数
1
解决办法
1674
查看次数

scala Predef对象中无法识别的代码

有人可以在Predef对象中解释以下代码吗?谢谢.

scala.`package`     // to force scala package object to be seen.
scala.collection.immutable.List // to force Nil, :: to be seen.
Run Code Online (Sandbox Code Playgroud)

scala

5
推荐指数
1
解决办法
237
查看次数

标签 统计

scala ×2

erlang ×1

jvm ×1

performance ×1

recursion ×1