1、斐波那契数列最先研究这个数列的人是意大利人斐波那契,Leonardo Fibonacci,他在描述兔子生长的数目时用上了这数列:
每个月兔子的总对数,就是这样一个序列:
这个序列从第三项开始,每一项都等于前两项之和。 在数学上,斐波那契数列是以递归的方法来定义:
2、代码实现2.1、递归实现根据斐波那契数列的数学定义,用递归可以很快实现,且代码简洁易懂。 递归实现虽然简洁,但却有许多重复计算,当 n 的值非常大时,重复计算的次数就会急剧增加,事实上该算法的时间复杂度随着 n 值的增加呈指数增长,其时间复杂度却为 O(2^n)。 有没有时间复杂度较低的算法呢? 2.2、循环实现
采用递归的方式实现,有许多重复计算,这些重复计算其实是不必要的。观察斐波那契数列的数学定义,F(n) 的值只与前两项相关,对于任意一个 n 值,只要记住这两个值,并不断更新,就可以避免重复计算。 采用循环的方式,时间复杂度降为 O(n)。 |
/1
|手机版|免责声明|本站介绍|工控课堂
( 沪ICP备20008691号-1 )
GMT+8, 2025-12-23 12:44 , Processed in 0.162657 second(s), 22 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.