美文网首页
分治法实例-Fibonacci数

分治法实例-Fibonacci数

作者: 借缕春风绽百花 | 来源:发表于2020-07-02 11:44 被阅读0次

定义:

斐波那契数列(Fibonacci sequence),又称[黄金分割]数列、因[数学家]列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“[兔子数列]”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

递推公式:

F(n)=F(n - 1)+F(n - 2),(n≥ 3,n ∈ N*)

算法思路;

很容易看出,f(n)的值取决于f(n-1)与f(n-2)之和,当我们需要求f(n)的值时,就需要先求f(n-1)和f(n-2)的值,而要求f(n-1)的值就需要先求f(n-2)和f(n-3)的值,以此类推,直到求f(1)和f(2)的值,因为f(1)和f(2)已知,故可以得出f(n)的值。
具体实现时分两个方向:
①从要求的数值以此向前求,这是递归方法。
②从3开始求,逐渐向后推,直到推到要求的数值则停止,这是迭代法。

算法设计:

①递归算法:
时间复杂度:O(2^n)

public static long GetByRecursion(long n){
   if(n==1||n==2)return 1;
   else return GetByRecursion(n-1)+GetByRecursion(n-2); //递归调用
}

②迭代算法
时间复杂度:O(n)

public static long GetByIteration(long n){
    long a=1,b=1;
    for(long i=3;i<n;i++){
        long temp=a+b;
        a=b;
        b=temp;
    }
    return b;
}

相关文章

  • 分治法实例-Fibonacci数

    定义: 斐波那契数列(Fibonacci sequence),又称[黄金分割]数列、因[数学家]列昂纳多·斐波那契...

  • 分治法实例-全排列

    1.问题描述 给出n个元素的所有可能的排列方式。如: [1,2,3]的排列有[1,2,3], [1,3,2],[2...

  • 分治法实例-汉诺塔

    1.算法实例——汉诺塔问题 思路: 三个柱子分别为A、B、C,初始状态为盘子都在A上,要求把A的盘子全部移动到C,...

  • Divide and Conquer

    算法之 分治法 Divide and Conquer 分治法: 分治法的设计思想是:将一个难以直接解决的大问题,分...

  • 归并排序

    1、分治法 归并排序是完全遵循分治策略的排序算法。什么是分治法? 分治法,即将原问题分解为几个规模较小的子问题,递...

  • 分治法,动态规划及贪心算法区别

    原文:分治法,动态规划及贪心算法区别 1.分治法 分治法(divide-and-conquer):将原问题划分成n...

  • [算法导论]归并排序

    时间复杂度 《算法导论》2.3.1 分治法。 归并排序采用了分治法的递归排序。分治法:分解子问题,解决子问题,合并...

  • 数据结构与算法(四,分治法和快排)

    分治法 思想:分治法的前提条件是数列已经是有序的,当在有序数列中查找一个数的位置时,首先取数列中间位置的值,与要查...

  • 算法基础1.分治法

    什么是分支法所谓分治法,分而治之。分解原问题成若干个子问题。这些子问题是原问题的规模较小的实例。解决这些子问题,递...

  • Divide and Conquer 分治法

    Divide and Conquer 分治法

网友评论

      本文标题:分治法实例-Fibonacci数

      本文链接:https://www.haomeiwen.com/subject/luwlqktx.html