资源经验分享剑指Offer(七):斐波那契数列

剑指Offer(七):斐波那契数列

2019-10-23 | |  92 |   0

原标题:剑指Offer(七):斐波那契数列

原文来自:CSDN      原文链接:https://blog.csdn.net/baidu_31657889/article/details/99680781


一、引子

这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提升下自己的算法能力。
查看完整的剑指Offer算法题解析请点击:剑指Offer完整习题解析

二、题目

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

1、思路

要想求斐波那契数列,我们要先知道什么是斐波那契数列,它的公式为:

f01.png

这道题递归很好写,但是存在很严重的效率问题。事实上,递归方法计算的时间复杂度是以n的指数的方式递增的。

我们可以看下面这张图,以求解f(10)为例类分析递归的求解过程。想求f(10),需要先求得f(9)和f(8)。同样,想求得f(9),需要先求的f(8)和f(7)…

f01.jpg

我们不难发现在这棵树中有很多结点是重复的,而且重复的结点数会随着n的增加而急剧增加,这意味计算量会随着n的增加而急剧增大。

所以,我们用简单的循环来实现。

2、编程实现

python2.7

代码实现方法:

# -*- coding:utf-8 -*-
class Solution:
   def Fibonacci(self, n):
        # write code here
        if n == 0:
            return 0
        a = 0
        b = 1
        for i in range(1,n):
            a , b = b,a+b
        return b


免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:剑指Offer(六):旋转数组的最小数字

下一篇:剑指Offer(八):跳台阶

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...