- 在线时间
- 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递归程序为例进行比较。
: ?8 d3 W$ Q- f/ x5 o
- p6 W4 h. N% l7 b$ Z* U; jMatlab 2009a的Fibonacci函数定义:- function k=fib(n)3 U, f5 i- O! F$ t& \$ n6 ~; G
- if n == 0% N% Z& d' i; I5 X, }4 W' y
- k=0;/ K5 T9 @: |1 K, D& V
- return;
2 s& C8 Z L: w9 P$ L - else if n == 1
. O6 G2 }3 z' @; I6 L& R - k=1;% U\" e) @0 T% `( o
- return;) j# ]5 b+ n' w, d
- else
7 _ D9 v3 K! X- F5 @6 | - k=fib(n - 1) + fib(n - 2);0 Y4 s* i5 z, h* f5 X6 g3 W
- return;# w2 R( g7 I7 J2 u5 f
- end
5 s$ O% k6 N\" Y2 f\" p - end
复制代码 运行结果:- tic;# k0 v\" L h! x! O% Z: L w0 d
- fib(30)! g\" D3 f) V* U l' N( y
- toc% c1 `6 G( U: Y7 ^
- . R9 i9 o* w$ M/ K! L% o
- ans =7 o, E$ z5 y& X' Q
- 832040; C' j5 ^: R9 j' n7 F
- ) T3 @& d# V, }1 E
- Elapsed time is 26.315245 seconds.
复制代码 ===============9 b' D1 K! _( T- E
9 y8 N C# _0 s) T( z" [' E- c9 s
Forcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);7 Y. I# {3 |/ W0 v' e
- F(n)= which{
* H. I) g4 u. C2 `7 e; H - n == 0,7 [. F8 O( J0 ]7 [
- return(0),
+ A ]! @' y' O/ [1 S - n == 1,6 ] R4 u7 h9 d9 V% g\" P
- return(1),
/ e3 `8 i- \# j! P: J6 U\" C2 F - return [F(n - 1) + F(n - 2)] n4 d- |. `& L- `0 N4 H: q
- };* h5 p: \& s; A3 S
- mvar:' a2 ?# }! x/ s7 T1 F) S
- t=sys::clock(),4 m- A& d$ u3 I9 L0 A4 T
- F(30);6 A; \9 n0 p' ~/ G) p* `% t
- [sys::clock()-t]/1000;
复制代码 结果: E- O7 K( A6 z* Z/ H/ P
832040.
$ S% [2 k4 n7 Y- E" f0.391 秒
* k8 h) B" F: a8 j z/ z, h* {9 L; `0 ^3 C( e/ c& L/ V+ i9 H7 ?$ k
二者效率相差数十倍。 |
zan
|