前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LintCode斐波纳契数列题目:分析小结

LintCode斐波纳契数列题目:分析小结

作者头像
desperate633
发布2018-08-22 10:10:58
3520
发布2018-08-22 10:10:58
举报
文章被收录于专栏:desperate633desperate633desperate633

题目:

查找斐波纳契数列中第 N 个数。 所谓的斐波纳契数列是指: 前2个数是 0 和 1 。 第 i 个数是第 i-1 个数和第i-2 个数的和。

斐波纳契数列的前10个数字是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

样例 给定1,返回0

给定2,返回1

给定10,返回34

分析

开始刷LintCode的第一道题,也是很基础的一道题。 斐波那契数列经常用来讲解递归的例子。 所以可以用递归的方法很方便的解决

递归

class Solution {
    /**
     * @param n: an integer
     * @return an integer f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if(n == 1)
        {
            return 0;
        }
        else if(n == 2)
        {
            return 1;
        }
        else
        {
            return fibonacci(n-1) + fibonacci(n-2); 
        }
    }
}

这是用递归的方法解决,很清晰,几乎是照搬了斐波那契数列的递推式 但是递归算法的时间复杂度太高,提交之后并不通过

捕获.PNG

非递归方法

所以需要尝试非递归方法解决这个问题

class Solution {
    /**
     * @param n: an integer
     * @return an integer f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if(n == 1)
        {
            return 0;
        }
        else if(n == 2)
        {
            return 1;
        }
        else
        {
            int s1 = 0;
            int s2 = 1;
            int sum = 0;
            int i = 3;
            while(i <= n)
            {
                sum = s1 + s2;
                s1 = s2;
                s2 =sum;
                i++;
            }
            return sum;
        }
    }
}

小结

以上就是斐波那契数列问题。 ** 故不积跬步,无以至千里;不积小流,无以成江海 ** 希望能慢慢坚持下去,从简单到复杂的算法!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.10.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • 分析
    • 递归
      • 非递归方法
      • 小结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档