剑指offer刷题记录7--斐波那契数列
该系列博客内容主要是《剑指Offer》中的经典题目,结合在刷题过程中见到的一些精彩的解题过程,从而在这里记录下来。代码以Python3实现。
题目分析
此处最容易想到的便是用递归的思想进行求解,比如我们要求f(10),那么得先求f(9)和f(8)。同样,要求得f(9),得先求f(8)和f(7),用下图表示求解过程。
不难发现,在这棵树当中,有很多的节点是重复的,这就意味着当n的数字很大的时候,用递归的方法计算的时间复杂度是以n的指数方式进行递增的,因此不是最好的解法。
递归法代码
什么是动态规划呢,这里推荐一篇博文,写的真的太好了,点击传送门,感兴趣的一定要看。这里也有一篇博客用动态规划的思想求解本题,详情点击。
参考链接
还有一种是矩阵快速幂解法,传送门。