数学算法(一):快速求斐波那契数第n项通过黄金分割率公式
有一个固定的数学公式= =,不知道的话显然没法应用
首先黄金分割率接近于这个公式,

(以下为黄金分割率与斐波那契的关系,可跳过)
通过斐波那契数列公式

两边同时除以

得:
(1)
注意后一项比前一项接近于黄金分割率
(2)
那么前一项比后一项则为1/黄金分割率(备注:其实有这么一个规律0.618/1=1/1.618=1.618/2.618=0.618)
(3)
那么(2)(3)带入(1)可得


可以求得黄金分割率的根为

对于广义的斐波那契数列:
一般项可以表示为:
因此:

当 
这个函数趋向于

开始代码
a(n)为斐波那契数第n项,Binet 公式(推导过程见下最下方)

O(1)复杂度
Python
def fib(self, N):
golden_ratio = (1 + 5 ** 0.5) / 2
return int((golden_ratio ** N + 1) / 5 ** 0.5)
参考:
斐波那契数列与黄金分割率的关系:https://demonstrations.wolfram.com/GeneralizedFibonacciSequenceAndTheGoldenRatio/
Binet公式推导:https://www.sohu.com/a/284819172_614593
数学算法(一):快速求斐波那契数第n项通过黄金分割率公式的更多相关文章
- 黑马入学基础测试(三)求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
.获得用户的输入 计算 3打印就行了. 这里用到了java.util.Scanner 具体API 我就觉得不常用.解决问题就ok了.注意的是:他们按照流体的方式读取.而不是刻意反复 ...
- hdu1568&&hdu3117 求斐波那契数前四位和后四位
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=2 ...
- 用JS,求斐波那契数列第n项的值
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- POJ 3070(求斐波那契数 矩阵快速幂)
题意就是求第 n 个斐波那契数. 由于时间和内存限制,显然不能直接暴力解或者打表,想到用矩阵快速幂的做法. 代码如下: #include <cstdio> using namespace ...
- HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】
Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Proble ...
- C++求斐波那契数
题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...
- 01-封装函数求斐波那契数列第n项
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 求斐波那契数的python语言实现---递归和迭代
迭代实现如下: def fab(n): n1 = 1 n2 = 1 if n<1: print("输入有误!") return -1 while (n-2)>0: n3 ...
- SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1
5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...
随机推荐
- window10安装nginx及请求转发到tomcat服务器访问项目及开机自启
一.安装ngnix 1. 到nginx官网上下载相应的安装包,http://nginx.org/en/download.html: 下载进行解压,将解压后的文件放到自己心仪的目录下,我的解压文件放在 ...
- 【已解决】使用 yarn 安装时,报错node_modules\node sass:Command failed.
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org npm install node-sass y ...
- ALSA lib编译
http://blog.sina.com.cn/s/blog_7d7e9d0f0101lqlp.html alsa lib: #!bin/sh rm -rf ./output/* mkdir -p ...
- 利用Master库spt_values表 连续数字
SELECT CONVERT ( ), dateadd(d, number, GETDATE()), ) AS every_time FROM master..spt_values n WHERE n ...
- 区间无修改莫队学习笔记(lg1494小z的袜子)
这几天感觉要学的要做的有点多,就偷了个懒没写笔记,赶紧补一下 莫队嘛,一个离线处理各种区间(或树上)询问的神奇算法 简单而言,按左端点排个序然后指针l,r递推就好了 复杂度证明貌似是不待修改的n^1. ...
- SSM+layui实现增删改查
前端使用layui框架,后端使用Spring+SpringMVC+Mybatis的集合框架,数据库使用MySQL,完成对一张用户表的增删改查操作. 前后端分离开发,即前端的HTML页面通过ajax技术 ...
- Django学习笔记3
From the last two parts, we know, by using the HttpResponse we can return text to the web page, and ...
- Java基础知识点总结笔记
面向对象的三大特性 继承:一般只能单继承,内部类实现多继承,接口可以多继承 封装:访问权限控制public>protected>包>private内部类也是一种封装 多态:编译时多态 ...
- 转: Struts2中拦截器与过滤器的区别及执行顺序
当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会 ...
- 题解【洛谷P1433】吃奶酪
题面 看到数据范围那么小,一眼状压\(\text{DP}\). 设\(dp[i][s]\)表示从\(i\)出发,走过的点的集合为\(s\)的最小距离. 不难推出转移方程(\(dis(i,j)\)为\( ...