- 在线时间
- 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递归程序为例进行比较。
* _2 m' Y+ Z: l# `, M3 r# O4 l$ M6 m' P# N( t. d+ D
Matlab 2009a的Fibonacci函数定义:- function k=fib(n)3 I/ ?. r [ S: w( ~& K( g
- if n == 03 H$ |3 f: S& d9 f6 {7 v$ o
- k=0;; P2 N7 f% c4 I# {: B. ~) |
- return;; R# {- {& C% S% D1 i
- else if n == 1
. @* d7 E( E+ D+ a! p1 _ - k=1;
' c4 i7 U& h' M K9 o5 p - return;
( D7 s$ Q7 r* l5 k* I$ D. M - else
+ M! E ], X\" r& k - k=fib(n - 1) + fib(n - 2);
9 R( Y9 s3 \9 x8 S+ | m0 n2 b - return;* X& n% R6 J/ `% y# O) M
- end
9 }9 u% H2 |5 w' Z' _ - end
复制代码 运行结果:- tic;* U6 m. z2 j: @; @$ P9 G\" z D5 D\" J
- fib(30)4 t- a. S& @# {
- toc
! M0 ?6 a3 ^+ f5 a, z6 o
; x# A: D8 u0 h0 p R4 n- ans =
\" t9 Z! ~7 `3 j( x* f4 D - 8320405 G* ]+ j& D, i& d( M
- 7 E) b& k7 R7 z; ~, [( V H+ \
- Elapsed time is 26.315245 seconds.
复制代码 ===============
. S* @' H. ]2 A3 U- ]0 C6 _$ z+ c% [5 Q
Forcal 9(OpenFC演示)的Fibonacci函数及代码:- SetRealStackMax(1000);: L) T* |; p\" m2 ?
- F(n)= which{
- s% P X- H' n7 P0 G' A) j - n == 0,
# q6 m _3 N+ M5 `; u0 `$ ? - return(0),
\" p) r) K+ q' W# ~8 ?( J - n == 1,
- A/ l0 S. ~6 Y1 g- H6 e4 J% N - return(1),. h6 {/ k1 X6 ?' C
- return [F(n - 1) + F(n - 2)]
8 I; J0 ^0 m6 `) m4 {' } - };, a' c ~ U% Q8 k% H1 m2 K+ l
- mvar:* }/ X0 n; _$ _; l E0 F
- t=sys::clock(),
) y( _+ N$ T& o5 T/ T) ` - F(30);4 Y2 ^, N7 V9 Z
- [sys::clock()-t]/1000;
复制代码 结果:. y; r% h% W. u- Q9 z
832040.
* F# V. |9 d) g% D9 a7 W0.391 秒
. `, S" i" \) u3 V" l1 z% F( Z) S8 k5 C
二者效率相差数十倍。 |
zan
|