资讯专栏INFORMATION COLUMN

算法记录 >> 斐波那契数列

robin / 2459人阅读

摘要:今天去面试笔试题斐波那契数列实现,虽然很简单。回来想想既然算法这么重要那就从这个开始来记录自己的算法库吧。在数学上,斐波纳契数列以如下被以递归的方法定义,,。斐波拉契算法规律很简单,,观察下数列值就很容易总结出来了。

一、写在前面

算法这块对于大多数程序员(包括我)来说可能都是一个薄弱的地方,如何弥补尼? 每个人都知道那就是学习、特别是算法没有任何捷径可走。

在这记录平时自己工作和生活中遇到的一些算法,以便来自己来温故。

今天去面试笔试题 斐波那契数列 实现,虽然很简单。回来想想既然算法这么重要那就从这个开始来记录自己的算法库吧。

二、简介

斐波那契数列(Fibonacci sequence)的定义: 斐波拉契数列是指这样的一组数据 0、1、1、2、3、5、8、13、21……这个数列其实很容易找到规律的从第三项开始每一项值都等于前两项之和(fn = f(n-1) + f(n-2))

斐波那契数列又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。

算法基本概念很好理解,下面我们来看看用代码来实现下。

实现

其实数学公式已经有了,F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2) 那我们就用递归来实现下

public class PrintFib {
    
    //建立一个函数,用于计算数列中的每一项
    public static int fib(int num) {
        if(num <= 0 ){
            return 0;
        }
        if(num == 1 || num == 2) {
            return 1;
        }
            //循环调用本函数
        return fib(num - 2) + fib(num - 1);
        }
    
    
    //主函数(程序入口)
    public static void main(String[] args) {
        
        //建立一个for循环,用于打印第一个至第十个数字
        for(int i = 1;i <= 10;i++) {
            //调用函数进行打印
            System.out.print(fib(i) + "	");
        }    
    }
    
}

实现很简单,结果我就不答应了, 感兴趣的同学可以自己试一下。

总结

算法的学习是一个很枯燥的过程, 但是当你征服一个算法也会给你带来很大愉悦感。

在学习算法时,我们首先要搞明白其产生的原因,是为了解决什么问题, 再去学习起数学公式,最后在以coding的方式去实现就比较简单了。

斐波拉契算法规律很简单,F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2) 观察下数列值就很容易总结出来了。

当你总结出规律后使用代码实现起来就比较简单了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74794.html

相关文章

  • 斐波那契数列看递归和动态规划

    摘要:大名鼎鼎的斐波那契数列,,,,,,,,使用数学归纳法可以看出其规律为。对于斐波那契数列的求解,有自顶向下的记忆化搜索递归和自下向上的迭代法,他们都使用了动态规划的思想。 大名鼎鼎的斐波那契数列:0,1,1,2,3,5,8,13,21...使用数学归纳法可以看出其规律为:f(n) = f(n-1) + f(n-2)。 递归 下面首先直接使用递归(JavaScript实现)来求解第 n ...

    charles_paul 评论0 收藏0
  • 数据结构与算法:常见排序算法

    摘要:这是一个简单的递归函数,你可以使用它来生成数列中指定序号的数值这个函数的问题在于它的执行效率非常低有太多值在递归调用中被重新计算。 本章内容衔接上一章 数据结构与算法:二分查找 内容提要 两种基本数据结构: 数组 常见操作: 数组降维、数组去重 链表 递归:递归是很多算法都使用的一种编程方法   - 如何将问题分成基线条件和递归条件   - 分而治之策略解决棘手问题 ...

    wuyumin 评论0 收藏0
  • 数据结构与算法:常见排序算法

    摘要:这是一个简单的递归函数,你可以使用它来生成数列中指定序号的数值这个函数的问题在于它的执行效率非常低有太多值在递归调用中被重新计算。 本章内容衔接上一章 数据结构与算法:二分查找 内容提要 两种基本数据结构: 数组 常见操作: 数组降维、数组去重 链表 递归:递归是很多算法都使用的一种编程方法   - 如何将问题分成基线条件和递归条件   - 分而治之策略解决棘手问题 ...

    Carson 评论0 收藏0
  • 【刷算法】我知道的所有类似斐波那契数列的问题

    摘要:有一类算法问题类似斐波那契数列,而且解决办法基本差不多。不了解斐波那契套路的可以看刷算法斐波那契数列跳台阶问题题目描述一只青蛙一次可以跳上级台阶,也可以跳上级。给定整数,求年后牛的数量。分析设为年后牛的数量,则第年牛的来源有两个。 有一类算法问题类似斐波那契数列,而且解决办法基本差不多。不了解斐波那契套路的可以看【刷算法】斐波那契数列 跳台阶问题 题目描述一只青蛙一次可以跳上1级台阶,...

    NotFound 评论0 收藏0
  • 太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

    摘要:那其实这个问题还可以换个问法实现一个函数,输入一个数字能返回斐波那契数列的第个值。文章预告更多的前端面试分享我都会第一时间更新在我的公众号闰土大叔里面,欢迎关注 面试攒经验,lets go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察js算法),上面写着1、1、2、3、...

    Galence 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<