- 在线时间
- 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递归程序为例进行比较。
9 T- b; v9 {& N2 t- a/ r- Y
. R% x* w0 g+ a8 z) W: Q" @Matlab 2009a的Fibonacci函数定义:- function k=fib(n)
% P2 L1 u7 E, D: j+ t - if n == 0
, {6 a2 l4 @- D% e7 }* q V. v( F& Q - k=0;! s\" A# Z8 f\" L- P1 B9 m, \
- return;0 P( t( I* Z- s; ?' }0 Q. X* L
- else if n == 1! z% F% i+ U( A5 K @7 L! S! Y
- k=1;& A3 c% J8 \2 F5 }4 o8 u/ G6 c n
- return;
; n G7 h' W5 j - else; Q+ s$ H, }+ b1 d* O
- k=fib(n - 1) + fib(n - 2);
0 O\" r4 b! B7 |6 g - return;
9 K* v6 c; u; R+ ^ L$ Q# Y+ X - end: r# n) H\" P4 e* u6 ]
- end
复制代码 运行结果:- tic;' b2 g- }0 l2 l
- fib(30)- t2 P; g7 k4 O c* a
- toc$ O1 B5 Q& {/ p7 o. Q( [* S P
- . X7 Z' e R$ U, @
- ans =
7 @! }) u! K5 e3 Z' ?6 y2 M - 832040
+ J, B6 L. i# j0 D7 | - 0 M2 ^3 ]: S* E1 {0 ?: H1 F6 L
- Elapsed time is 26.315245 seconds.
复制代码 ===============
" C9 T; Q9 N) [( I" X, ?2 {9 x4 e: h& A* G, i, A
Forcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);; [. @* t' q( B! y/ F
- F(n)= which{/ `0 Z1 L; M) U2 J i
- n == 0,% A! R& a. G8 s# H% k* x
- return(0),2 d: p) Y. x; Y' _% |0 b\" X$ Z
- n == 1,( F9 q4 a% D7 R0 k& A/ G& n
- return(1),
. Z) i, V( A1 d5 |7 e3 o7 S) C5 g - return [F(n - 1) + F(n - 2)]
/ m) h% G4 [3 Y% n1 _( x - };\" X: V# Y) v. _
- mvar:
5 d7 A\" f+ I# d% d+ b1 m4 N - t=sys::clock(),
. B! A, N4 x4 } - F(30);' l, P) G& ?. ^! t' ^; R2 P, N
- [sys::clock()-t]/1000;
复制代码 结果:5 D6 N" @7 m# s5 z; A& t" t
832040.& Z! I2 F4 i; R9 c# Z+ G
0.391 秒
- R, k" b4 f/ n7 P5 g/ \( D* L, y) x8 P' O
二者效率相差数十倍。 |
zan
|