Fibonacci number是这样的数列:
f(0) = 0, f(1) = 1,
f(n) = f(n-1) + f(n-2) (n 》=2)
下面给出几种求解方法
1) 使用函数递归方法。
这个是最容易想到的方法
但是这个比较花时间,因为有很多重复计算(重复的函数调用)。
在我的电脑上,计算f(45)的值,用了10.256秒的时间。
2) 把计算的中间结果保存下来,避免重复计算。
用这种方法计算f(45),仅仅用了 0.000017秒的时间, 时间降低了百万倍!
3) 第二种方法,使用了较多的内存保存中间结果。还可以进一步减少内存的使用。
所需时间和 2)差不多。
4)不使用函数递归,使用迭代的方法
5)
6)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
算法
+关注
关注
23文章
4599浏览量
92617 -
C语言
+关注
关注
180文章
7597浏览量
136120
发布评论请先 登录
相关推荐
10个经典的C语言面试基础算法及代码
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文包括了经典的Fibonacci数列、简易
发表于 11-20 15:18
六个带有WiFi模块的单片机跟一个配置为AP模式的单片机通信,六个之间并不通信
我得目的是让六个带有WiFi模块的单片机跟一个配置为AP模式的单片机通信,六个之间并不通信这个过程绝不能涉及任何手机电脑路由器,不知道可不可以。想听听各位的的高见
发表于 05-16 06:35
10个经典的C语言面试基础算法及代码
1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。C语言实现的代码如下:/* Displa
发表于 07-25 17:07
关于10大C语言基础算法
算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。1、计算
发表于 04-29 14:30
sd可以实现六个面对应六个不同文件夹sd音乐吗?
想做一个感应正方体音乐盒,通过三轴加速度计去感应六个面的变化,从而去读取sd不同文件夹的音乐,六个面对应六个不同文件夹sd音乐,而且文件夹里面的音乐是可以换的,我知道单独设置一
发表于 08-12 22:09
六个子目录的作用
到的不同文件。建立CMSIS、Library、Listing、Output、Project、User六个子目录,如下图所示。下面来讲一下这六个子目录的作用。C
发表于 08-04 06:51
PROTEL DXP的六个实验指导教程
本文档的主要内容详细介绍的是PROTEL DXP的六个实验指导教程包括了:实验一 初步使用Protel DXP 系统,实验二 绘制A/D转换电路原理图,实验三 音乐闪光灯电路设计——新建元件库,实验
发表于 10-29 15:19
•11次下载
decimal和number的区别
的数据类型。Number数据类型可以包括整数、浮点数、复数等等。在不同的编程语言和环境中,Number的实现方式和支持的操作可能会有所不同。 Decimal是Number的一个具体实现
评论