栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode-509-斐波那契数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-509-斐波那契数

斐波那契数

题目描述:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

  • F(0) = 0,F(1) = 1
  • F(n) = F(n - 1) + F(n - 2),其中 n > 1

给你 n ,请计算 F(n) 。

示例说明请见LeetCode官网。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fibonacci-number/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:递归法

当n小于2时,直接返回n,当n大于2时,通过公式F(n) = F(n - 1) + F(n - 2)递归调用当前方法并返回。

解法二:迭代法

当n小于2时,直接返回你,当n大于2时,通过迭代的方式计算当前值,具体过程如下:

  • 记录当前的值的前2位的值是lastSecond,记录当前的值的前1位的值是lastOne;
  • 然后从2开始遍历,一直到n;
  • 具体过程是将lastOne更新为lastSecond + lastOne,lastSecond更新为 之前的值;

最后返回lastOne的值即为当前值。

public class LeetCode_509 {
    
    public static int fib(int n) {
        if (n < 2) {
            return n;
        }
        return fib(n - 1) + fib(n - 2);
    }

    
    public static int fib2(int n) {
        if (n < 2) {
            return n;
        }
        int lastOne = 1, lastSecond = 0;
        for (int i = 2; i <= n; i++) {
            int temp = lastSecond + lastOne;
            lastSecond = lastOne;
            lastOne = temp;
        }
        return lastOne;
    }

    public static void main(String[] args) {
        System.out.println(fib(4));
        System.out.println(fib2(4));
    }
}

【每日寄语】 把机遇留给朋友,把幸运留给亲人,把勤奋留给自己。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号