Fibonacci 数列算法分析
/*************************************************
* Fibonacci 数列算法分析
*************************************************/
#include<iostream>
#include<stdio.h>
#include<vector>
#include<cmath>
#include<time.h>
using namespace std;
#define Time 1000000
#define N 15
#define Echo printf("result:%d | spend:%.3f\n",a,(((double)(clock()-start))/1000))
#define For for(int i=1; i<Time; ++i)
/*************************************************
Function: fibo1 fibo2 fibo3 fibo4
defferent: 1递归 2迭代 3向量 4公式
Description: 斐波那契数列求值
Return: 返回第N项的值
*************************************************/
int fibo1(int n) {
if(n==)return ;
if(n==)return ;
return fibo1(n-)+fibo1(n-);
}
int fibo2(int n) {
int a=,c;
for(int b=,i=; i<=n; ++i)
c=a+b,a=b,b=c;
return c;
}
int fibo3(int n) {
vector<int> v(n+,);
v[]=;
for(int i=; i<=n; ++i)
v[i]=v[i-]+v[i-];
return v[n];
}
int fibo4(int n) {
return (pow((+sqrt(5.0))/,n)-pow((-sqrt(5.0))/,n))/sqrt(5.0);
} int main() {
int a; clock_t start=clock();
For a=fibo1(N);
Echo; start=clock();
For a=fibo2(N);
Echo; start=clock();
For a=fibo3(N);
Echo; start=clock();
For a=fibo4(N);
Echo; return ;
}
循环次数 100000 ,N 为 10 结果如下
循环次数 100000 ,N 为 15 结果如下
-循环次数 100000 ,N 为 20 结果如下
可以看出递归最为耗时:代码简单易懂
向量由于做了大量的下标工作,相对来说次之
公式法再次之(在N=15时,公式法与迭代法性能不确定):公式推导,性能具有良好的稳定性
迭代最优:编程复杂,效率较高
以上只是针对本次测试
Fibonacci 数列算法分析的更多相关文章
- 2017.12.6 计算机算法分析与设计---------Fibonacci数列
(1)题目: 无穷数列1,1,2,3,5,8,13,21,34,55,--,称为Fibonacci数列.它可以递归地定义为: 第n个Fibonacci数可递归地计算如下: int fibonacci( ...
- 可变长度的Fibonacci数列
原题目: Write a recursive program that extends the range of the Fibonacci sequence. The Fibonacci sequ ...
- 入门训练 Fibonacci数列
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时, ...
- fibonacci 数列及其应用
fibonacci 数列及其延展 fibonacci计算 fibonacci数列是指 0,1,1,2,3,5,8,13,21……这样自然数序列,即从第3项开始满足f(n)=f(n-1)+f(n-2): ...
- 【编程题目】题目:定义 Fibonacci 数列 输入 n,用最快的方法求该数列的第 n 项。
第 19 题(数组.递归):题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n=2输入 n,用最快的方法求该数列的第 n 项. 思路:递归 ...
- 矩阵乘法快速幂 codevs 1732 Fibonacci数列 2
1732 Fibonacci数列 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在“ ...
- 矩阵乘法快速幂 codevs 1250 Fibonacci数列
codevs 1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1 ...
- 蓝桥杯 入门训练 Fibonacci数列(水题,斐波那契数列)
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非 ...
- 【wikioi】1250 Fibonacci数列(矩阵乘法)
http://wikioi.com/problem/1250/ 我就不说这题有多水了. 0 1 1 1 矩阵快速幂 #include <cstdio> #include <cstri ...
随机推荐
- Linux cut命令
[root@wang /]# cat /etc/passwd root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x ...
- 关于 Java 中 finally 语句块的深度辨析
应该有很多人对java的finally 理解的不是很透彻吧,这里有篇文章讲的非常深入.猛击下面链接.面试时经常问到这问题 http://www.ibm.com/developerworks/cn/ja ...
- 《小白的CFD之旅》招募写手
<小白的CFD之旅>系列招募写手. 由于工作繁忙,<小白的CFD之旅>系列更新缓慢,现招募志愿者写手.这是一个分享平台,欢迎各位愿意分享自己CFD学习经历的朋友们. <小 ...
- Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- HTTPS简述
Https是什么? HTTPS是Http Over SSL,简单来说就是HTTP的安全版本,在http之上使用TLS,SSL加密协议. HTTPS实质是在HTTP基础上使用非对称加密相互生成并传递对称 ...
- 第18章 集合框架(2)-Set接口
第18章 集合框架(2)-Set接口 Set是Collection子接口,模拟了数学上的集的概念 Set集合存储特点 1.不允许元素重复 2.不会记录元素的先后添加顺序 Set只包含从Collecti ...
- JSPatch
链接: JSPatch github项目主页 JSPatch技术文档 JSPatch基础用法总结 JSPatch – 动态更新iOS APP JSPatch使用小记 end
- 字符加密Cipher(bzoj 1031)
Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作 ...
- 15-前端开发之JavaScript
什么是 JavaScript ? JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出 ...
- U3D笔记11:47 2016/11/30-15:15 2016/12/19
11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...