- 在线时间
- 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递归程序为例进行比较。 i0 U9 U) h1 ^. H
4 U! z1 }# O6 J( |: TMatlab 2009a的Fibonacci函数定义:- function k=fib(n)
. G5 X7 ~6 H4 r& ]4 W- S4 U - if n == 0
0 F# V: a8 x, |3 t - k=0;
9 m* G% o5 `6 r' B3 t0 D - return;
: k% d0 E. Z: M+ [ - else if n == 1, D# R8 ^8 o& Z/ ]
- k=1;0 I/ X: ^ C1 ?+ G
- return;, e$ q. X9 x( Z
- else6 s6 D- D @) H0 k( d% U. I
- k=fib(n - 1) + fib(n - 2);
) H8 f* ^. q1 q, i# F/ H - return;
. G% i3 h) r( m' S& l4 e, e - end
# T4 _ I; v& u& G7 Q, [ - end
复制代码 运行结果:- tic;# `+ t% Y. F6 @! |' ^( m
- fib(30)
9 M' w\" F3 ?, R - toc
- t$ k+ i# k* V2 a3 c - 5 j/ z\" S# A, o
- ans =
9 P4 f) R\" K6 r2 J - 832040
/ i% [- u t3 O( {! C4 j\" X
, h1 Z/ g9 P* I1 L, L2 J s- q7 \- Elapsed time is 26.315245 seconds.
复制代码 ===============# C2 Q5 n0 v* M# P: B5 Z
6 s3 R5 `+ `- ^2 H: A0 A( N4 }8 u$ EForcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);
: J\" W/ p1 t3 P6 i3 X0 t- g# m$ k - F(n)= which{
4 j& s, j/ ]6 I. n; x: h - n == 0,# \3 P% f0 L\" `5 E
- return(0),
* `6 C. k5 v\" p6 K% F6 H) m - n == 1,0 V. C5 x2 S* Y0 ^
- return(1),3 A; I1 V. U0 H/ F0 x* [
- return [F(n - 1) + F(n - 2)]\" a/ l5 g' Y8 W9 x9 F
- };8 e, q, o/ D; n! U; V+ T4 H
- mvar:$ r. i# q: i8 d h# A' }
- t=sys::clock(),
1 A/ I$ ^6 x; L - F(30);\" f. O. W3 I& o$ k' P6 \
- [sys::clock()-t]/1000;
复制代码 结果:9 T# y1 K- n5 t# f) R
832040.9 J1 t1 A/ d4 p+ `
0.391 秒
8 f1 o D2 @8 C4 G; M/ S; G/ a7 }1 Y: z# T
二者效率相差数十倍。 |
zan
|