- 在线时间
- 13 小时
- 最后登录
- 2013-12-8
- 注册时间
- 2010-5-13
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 399 点
- 威望
- 11 点
- 阅读权限
- 30
- 积分
- 282
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 97
- 主题
- 45
- 精华
- 0
- 分享
- 0
- 好友
- 1
升级   91% TA的每日心情 | 难过 2012-8-27 18:22 |
|---|
签到天数: 1 天 [LV.1]初来乍到
 |
以Fibonacci递归程序为例进行比较。
) n- w9 ]% h' o9 v( N$ x5 o/ N5 h5 x8 g+ P# L$ g: k
Matlab 2009a的Fibonacci函数定义:- function k=fib(n)
0 Q! ^: g1 c* H) p - if n == 0- n7 g\" T4 J) l& {+ c- x
- k=0;
! C$ V0 K- d1 t - return;$ r& P- b8 W6 X, e) z- e3 N
- else if n == 1* v# O- C: l' n4 h# w! }% u
- k=1;
9 p4 T2 o0 a- `! D _ - return;7 B* v8 I) j+ ?\" J! }% }
- else0 `7 N* E5 c) A; {2 o4 D
- k=fib(n - 1) + fib(n - 2);+ x+ `: }1 S- E/ j5 L* }
- return;
* T6 i! G# W% I. i* [ - end9 ?6 r% p; c1 G7 T \ d- t
- end
复制代码 运行结果:- tic;. V1 x+ H8 W- S: B7 [0 w
- fib(30)
( V% W$ Q7 W) P5 e - toc1 n2 r' r& T\" Z
9 G( O# E+ ^! D9 g0 W0 M0 a) C6 x4 L- ans =
; l! s- a3 T# X - 832040& U# b6 r% A% Q% s1 L7 O
- z9 g! C: H' X- Elapsed time is 26.315245 seconds.
复制代码 ===============3 T6 K* \' z; R3 L4 v. q& [- u
' p# ~4 K) P9 {Forcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);
- l$ S6 J! _3 a+ g* e- m; o: `8 S - F(n)= which{$ t: b6 a, _* w. e: p0 R
- n == 0,
. o( `4 o* B6 K' u( p% X2 v2 K - return(0),
5 r5 y& V0 w9 @6 P - n == 1,
5 [\" K* c! G' J# k\" p - return(1),. }& r% Y$ Q: ~' Y! C' k! K: N8 j
- return [F(n - 1) + F(n - 2)]
1 L6 ]8 ?; ]\" } - };
, `0 D2 _0 o5 u) g2 B$ y - mvar:+ h* x! _5 g+ o4 v9 l+ c1 v
- t=sys::clock(),
. A5 O2 Y* f1 Y2 n6 E7 c - F(30);
+ ` y. B% v5 V& X& ]- R# A - [sys::clock()-t]/1000;
复制代码 结果:' B* l7 C0 A/ o4 a- U
832040.
1 o5 ~# y0 f. g" S% t6 V+ W0.391 秒
0 T" H# i1 ~" ~3 f+ `7 y) f) Y% Z! l
二者效率相差数十倍。 |
zan
|