您的位置:首页 > 其它

Fibonacci(斐波那契)序列的递归和非递归算法

2010-12-07 11:30 323 查看
Fibonacci(斐波那契)序列的递归算法大家都已经很熟悉了:

//
Fibonacci序列第n项的值

//
递归算法

unsigned int
Fib1(unsigned

int
n)

{

if
(n
==

1

||
n
==

2
)

return

1
;

else

return
Fib(n
-

1
)
+
Fib(n
-

2
);

}

而且递归算法的缺点是效率太低,下面是非递归算法:

//
Fibonacci序列第n项的值

//
非递归算法

unsigned

int
Fib2(unsigned

int
n)

{

unsigned

int
nRet, nP,
nPp
;

nRet = nP = nPp = 1;

if
((n
==

1
)
||
(n
==

2
))

return
nRet

;

for
(unsigned

int
i
=

3
; i
<=
n; i
++
)

{

nRet
=
nP
+
nPp;

nPp
=
nP;

nP
=
nRet;

}

return
nRet;

}

Fibonacci(斐波那契)序列:

Fib(n) = Fib(n - 1) + Fib(n - 2), n>1, Fib(1) = Fib(2) = 1

即:序列的第一和第二项是1,从第三项开始,后一项是前两项的和。

序列的前8项是:

1, 1, 2, 3, 5, 8, 13, 21
http://blog.csdn.net/starlee/archive/2006/02/13/598036.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: