- 在线时间
- 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递归程序为例进行比较。7 ]- L( D0 u- h/ X t
. B9 M: j! h: ?' z2 ~Matlab 2009a的Fibonacci函数定义:- function k=fib(n)
4 z7 `0 E7 A3 J$ T - if n == 0; Q. H3 R) u' ]. j
- k=0;
! X- l& l5 Z; b, p' k6 o* q - return;
# M& |3 e( i\" z - else if n == 13 j% l4 }7 l6 e: k, _( Y
- k=1;0 Q& f) d( i) `0 X! h
- return;# |% |+ J7 [) ^7 S$ C
- else1 b\" P# v9 z3 ^1 E d
- k=fib(n - 1) + fib(n - 2);
7 L) {2 M& ~6 a7 Z8 T1 P- P - return;% ?6 z; ^5 u7 B
- end
5 y: x: g6 g' @4 z& f1 o - end
复制代码 运行结果:- tic;* Y9 z1 N$ u0 m7 V6 A, y
- fib(30) c i+ X\" K. i8 f
- toc+ o\" a- [2 W/ `/ M4 B% F+ ^; I
- & { D ~! u7 `' U2 [& D9 `% Y/ U
- ans =# H# u! t6 @\" N
- 832040
) L2 l1 f3 G) d/ g! }2 ` - R; z0 q2 _) ?2 P9 C9 K
- Elapsed time is 26.315245 seconds.
复制代码 ===============5 u$ d( b& |% x% q& k. L& {
; O8 U& C% v' B* @! {Forcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);
# f& c% l4 o m6 ]' L: P - F(n)= which{
# e/ `+ P/ [! j - n == 0,
% h1 b! {; u4 O* U - return(0),
( a5 b( N* C i! Q6 Y - n == 1,6 b; [! ?% }4 ]8 h; Q! J1 H
- return(1),
& s4 B3 u+ l5 M, e9 \ - return [F(n - 1) + F(n - 2)]
6 V& p4 ]* s0 @7 [& n - };7 j6 w1 ^6 \2 I
- mvar:
3 e9 ?; z2 ~% Q' a) L - t=sys::clock(),
) p, {/ _* @, r1 E* C9 N( {8 s - F(30);
$ c1 b0 c6 i. a L: { - [sys::clock()-t]/1000;
复制代码 结果:
' v7 ~8 b) ] L, W. R5 A832040.
5 s( }, a. ~, V* ?! c0.391 秒
3 I' X3 Q- d' l+ u+ Y+ \' i- \ ]6 a
二者效率相差数十倍。 |
zan
|