一种快速求fibonacci第n个数的算法
利用动态规则的思路,摒弃传统的递归做法,可以得到一种快速的求fibonacci第n个数的算法:
- '''
- 求第n(从1开始)位fibonacci数
- fibonacci数列前两位为0, 1. 后面每一位数字等于前两位数字之和
- '''
- def fibonacci( n ):
- if n <= 2:
- return n - 1
- f = 0
- g = 1
- while n - 2 > 0:
- g = g + f
- f = g - f
- n -= 1
- return g
- print( fibonacci( 100 ) )
- '''
- 与上述函数等价的递归写法
- '''
- def fib_iter( f, g, n ):
- if n <= 0:
- return g
- else:
- return fib_iter( g, f + g, n - 1 )
- def fib( n ):
- if n <= 2:
- return n - 1
- return fib_iter( 0, 1, n - 2 )
- print( fib( 100 ) )
两者原理一样, 但递归形式在计算fib(1000)的时候就超出python最大递归数量了, 所以推荐循环写法.
结果是218922995834555169026
一种快速求fibonacci第n个数的算法的更多相关文章
- [笔记] 一种快速求 1 ~ n 逆元的方法
我们现在要求1~n在mod m意义下的逆元(n<m,m为素数). 对于一个[1,n]中的数i,我们令\(k=\lfloor\frac{m}{i}\rfloor,r=m \ mod \ i\) 然 ...
- 快速求出n!的质因数的个数
一般做组合数的题目都要进行质因数的分解,我们一般是for循环对每个数进行质因数分解,大多数情况都不会超时,但极少数的情况下,题目会不允许这样的做法,所以我们需要学会一种更快的方法来求质因数. 我们一般 ...
- 算法导论-求(Fibonacci)斐波那契数列算法对比
目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 ...
- [LeetCode] Count Complete Tree Nodes 求完全二叉树的节点个数
Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...
- 快速求n的质因子(数论)
快速求n的质因子 如何尽快地求出n的质因子呢?我们这里又涉及两个好的算法了! 第一个:用于每次只能求出一个数的质因子,适用于题目中给的n的个数不是很多,但是n又特别大的 #include<std ...
- 用PL0语言求Fibonacci数列前m个中偶数位的数
程序说明:求Fibonacci数列前m个中偶数位的数: 这是编译原理作业,本打算写 求Fibonacci数列前m个数:写了半天,不会写,就放弃了: 程序代码如下: var n1,n2,m,i; pro ...
- 程序员面试题精选100题(16)-O(logn)求Fibonacci数列[算法]
作者:何海涛 出处:http://zhedahht.blog.163.com/ 题目:定义Fibonacci数列如下: / 0 n=0 f(n)= ...
- 【GDOI 2011 DAY2 T3】零什么的最讨厌了 (快速求阶乘、中国剩余定理)
问题描述: 林记在做数学习题的时候,经常遇到这种情况:苦思冥想了很久终于把问题解出来,结果发现答案是0,久而久之林记在得到习题答案是0的时候就没有了做出一道难题的成就感.于是林记决定:以后出题,答案一 ...
- 快速求幂(Quick Exponentiation)
接触ACM没几天,向各路大神求教,听说ACM主要是研究算法,所以便开始了苦逼的算法学习之路.话不多说,RT所示,学习快速求幂. 在头文件<math.h>或是<cmath>中,d ...
随机推荐
- <Chapter 2>2-2-1.用户偏好模式(The User Preferences Pattern)
在这个模块中我们要创建的应用是一个简单的钟.当一个用户访问这个网站时,这个应用会更具服务器的系统时间显示当前的时间.默认情况下,这个应用使用标准国际时间(UTC)时区显示当前时间.用户可以使用Goog ...
- [POJ] #1001# Exponentiation : 大数乘法
一. 题目 Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 156373 Accepted: ...
- Hibernate配置文件——hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...
- gulp之静态资源防缓存处理
最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的 ...
- JSF 2.0 + Ajax hello world example
In JSF 2.0, coding Ajax is just like coding a normal HTML tag, it's extremely easy. In this tutorial ...
- SMTP邮件服务器配置
QQ个人邮箱使用: smtp.qq.com端口为25 密码是个人邮箱密码 QQ企业邮箱使用: smtp.exmail.qq.com端口为25 密码是邮箱密码 163邮箱使用 smtp.163.com端 ...
- SQL语句执行时所发生的步骤
- POJ 3312 Mahershalalhashbaz, Nebuchadnezzar, and Billy Bob Benjamin Go to the Regionals (水题,贪心)
题意:给定 n 个字符串,一个k,让你把它们分成每组k个,要保证每组中每个字符串长度与它们之和相差不能超2. 析:贪心策略就是长度相差最小的放上块. 代码如下: #pragma comment(lin ...
- poj3041
Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12162 Accepted: 6620 Descri ...
- Error: [$injector:unpr] angular.js
首先去看控制器是否存在错误 (function () { angular.module('myApp.demo', []) .controller('demoCtrl', ['$scope', '$r ...