- 在线时间
- 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递归程序为例进行比较。
* g& L, x# ]# T$ `" @( { r) P2 R* Q' K* \1 B; c
Matlab 2009a的Fibonacci函数定义:- function k=fib(n)
; M& R' S7 d- h9 Q9 I1 s0 _: s - if n == 0
% R, P3 \ ~6 ?( j* e3 D& W - k=0;
' v5 \' _1 I0 h& b8 w3 c, u% \ - return;
3 w: {2 U$ a7 R9 c% X - else if n == 17 p$ G S6 w- n6 i3 Y# s
- k=1;
. A( D q: H8 ^, L - return;
3 g( Q Y\" K# @- o3 Y - else
# E$ ?. A! k% y! \ - k=fib(n - 1) + fib(n - 2);& n4 u2 j$ B, k: L
- return;- a8 d; |\" b' ^3 F) W0 E$ h
- end
9 l; s# K# L5 K- z S3 f - end
复制代码 运行结果:- tic;
s5 `6 ^$ J. d% P, I - fib(30)
+ P+ a' t5 Q/ s8 }4 x1 H! a - toc
% l% g/ U+ e: A! s' K: S+ G
& N\" g! D, h+ E& {- ans =* v, y1 e7 ]2 k2 d; m/ f
- 832040
( h$ j% t w0 ~* V. v8 j - ( G4 Z M }3 Q6 t! u( c5 U
- Elapsed time is 26.315245 seconds.
复制代码 ===============
) }, Q' b+ j: ^5 T; u) E) o4 G( h8 |7 Z$ r" k& \
Forcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);
* f @) c8 y# G- v! W& O - F(n)= which{- P3 t. y1 w$ a
- n == 0,/ |4 |\" N: ?( \: O( Z1 a
- return(0),
4 e; T\" S# H$ ?, C - n == 1,0 i$ z$ ^+ B' l+ X) g
- return(1),8 `3 I, i0 q$ ~+ F7 D4 o% D, `
- return [F(n - 1) + F(n - 2)]
\" Z9 A6 j4 D! g) x) }# ~8 A* s - };
3 U* D$ k! c* i1 }) v5 v; ~ - mvar:/ y\" r\" @( w) W: e8 y\" s/ a
- t=sys::clock(),
# Y) |. X; ~+ J5 f\" A - F(30);2 T$ d s% S; c) K/ r* X
- [sys::clock()-t]/1000;
复制代码 结果:
, C% n% Q1 f# b* v' u5 i) ]832040.
" ^( ~. G" ?% @* I q0.391 秒* j' l* R5 Y2 ^0 T, e7 I
3 n/ [) I$ W! w
二者效率相差数十倍。 |
zan
|