数学建模社区-数学中国
标题:
极限测试之Matlab与Forcal的递归函数调用效率
[打印本页]
作者:
forcal
时间:
2011-7-31 10:08
标题:
极限测试之Matlab与Forcal的递归函数调用效率
以Fibonacci递归程序为例进行比较。
- Z$ `! I8 e4 v& F
/ e, ?7 z) M1 X. u6 m
Matlab 2009a的Fibonacci函数定义:
function k=fib(n)
, M4 g0 P P* |3 D9 N% d
if n == 0
/ P6 R, A4 j9 a
k=0;
0 h+ p- _* R" `/ ^6 q( ^
return;
1 H5 h$ ~! h; _* o0 C. j8 o" ]
else if n == 1
* ]7 I) r2 ]0 G6 n C* R" [
k=1;
: O, B3 j6 ^+ s0 d3 t& ^8 N/ Y
return;
0 `8 o) ^! v- f5 i
else
8 n7 s7 c& [: [$ l8 Y# @, j
k=fib(n - 1) + fib(n - 2);
* m( n2 J) w- p, ]8 E0 o
return;
* z, S# l4 F0 K$ m
end
5 E6 q. }+ V! A- g" h
end
复制代码
运行结果:
tic;
. r$ X; U2 ]2 N) q- {7 T% Q
fib(30)
% u l$ G! c, E: L
toc
7 ]; X# [1 R' H/ ^- _" q# {2 \
4 Y9 |6 t. c( Z( [: t
ans =
% W& k. L3 Y% Q6 o" I! q5 w# R
832040
2 T4 F6 }4 f4 T+ F
& }( [+ Q, b" C; c) ` }7 q" A
Elapsed time is 26.315245 seconds.
复制代码
===============
# |6 {, `) K% Q4 v
' C8 T/ A0 Z$ a% r
Forcal 9(OpenFC演示)的Fibonacci函数及代码:
SetRealStackMax(1000);
, J& Z3 m% A) b6 T
F(n)= which{
- x p) r& e3 j% J6 L1 ^& J
n == 0,
% S$ t( U+ n. P& ~3 A' q9 N
return(0),
" u' O/ S/ r% Q( u+ `% h
n == 1,
5 X1 Q& F5 G7 i
return(1),
- }4 ?; w% \0 Z8 e) i
return [F(n - 1) + F(n - 2)]
' |- E3 y# m, H# S' l5 @
};
: v+ E5 ^1 x8 n4 o# B; W6 z
mvar:
- N/ c0 H! j8 D- L
t=sys::clock(),
7 l' W! M/ T0 ^# Z+ N
F(30);
" I j7 c' j% v) Q' b( [# r g
[sys::clock()-t]/1000;
复制代码
结果:
. ?3 m& d: X/ d& u0 y4 C
832040.
1 v6 }4 U7 E/ n
0.391 秒
. {3 a; H# k. M, z
% r1 a l5 s) T- l& `8 P
二者效率相差数十倍。
作者:
不特戈舟
时间:
2011-10-25 17:43
以后真的注意了。。。 楼主真好
作者:
alair005
时间:
2012-2-7 13:08
恩 是好东西啊 呵呵 ……
8193280172675049
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5