forcal 发表于 2011-7-31 10:08

极限测试之Matlab与Forcal的递归函数调用效率

以Fibonacci递归程序为例进行比较。

Matlab 2009a的Fibonacci函数定义:function k=fib(n)
if n == 0
  k=0;
  return;
else if n == 1
  k=1;
  return;
else
  k=fib(n - 1) + fib(n - 2);
  return;
end
end运行结果:tic;
fib(30)
toc

ans =
      832040

Elapsed time is 26.315245 seconds.===============

Forcal 9(OpenFC演示)的Fibonacci函数及代码:SetRealStackMax(1000);
F(n)= which{
    n == 0,
        return(0),
    n == 1,
        return(1),
    return
};
mvar:
t=sys::clock(),
F(30);
/1000;结果:
832040.
0.391  秒

二者效率相差数十倍。

不特戈舟 发表于 2011-10-25 17:43

以后真的注意了。。。 楼主真好

alair005 发表于 2012-2-7 13:08

页: [1]
查看完整版本: 极限测试之Matlab与Forcal的递归函数调用效率