1.介绍斐波那契数列:
描述:斐波那契数列(Fibonacci sequence),指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n ≥ 2,n ∈ N*)

总之,就是从第三个数开始,接下来的每个数,都是前两个数的相加之和;

2.下面是斐波那契算法的代码演示:

在这里插入代码片:
#include<iostream>
using namespace std;int Fibonacci(int i)
{if(i==0){return 0;}else if(i==1){return 1;}else{return Fibonacci(i-1)+Fibonacci(i-2);}
}void main()
{int i,n;cout<<"请输i的值:"<<endl;cin>>i;n=Fibonacci(i);cout << "输出前几项之和为"<<n<<endl;}


3.流程图分析斐波那契算法:

从这里我们可以看出,斐波那契的算法中会有较多的重复性运算,使时间复杂度大大增加了,大家可以看一下流程图,这里只用fib(5),就把简单的运算大大增加了,如果我们把所需要求得数字增加,那运算得时间就会大大增加,所以我们可以推出斐波那契的时间复杂度为:
递归算法:T(n)=O(2^n);
4.下面用简单的循环算法与递归算法,解斐波那契作比较:

在这里插入代码片:
#include<iostream>
using namespace std;int fib(int n)
{if(n==0){return 0;}if(n==1){return 1;}int first=0;   //第一个值int second=1;  //第二个值int sum;if(n>=2){for(int i=2; i<=n; i++)  //在循环时间内的计算为:(2n-1)*5+1{                         //所以时间复杂度估算为:T(n)=O(n)sum=first+second;  //将计算的值得出first=second;      //将计算后的值往后覆盖second=sum;}   return sum;  }}void main()
{int n,sum;cout << "请输入所需要输入的值" << endl;cin >> n;sum = fib(n);cout << "计算求和的值为:"<<sum << endl;}

在这里用循环,时间复杂度是大大减小的,也减少了重复的计算,通过估算的时间,用循环计算斐波那契的时间复杂度为:循环算法:T(n)=O(n);
相同的结果,可以很好的知道哪个方法更好;
在算法中,时间复杂度是越少越好,所以这里用循环解斐波那契会更好:
T(n)=O(n) < T(n)=O(2^n);

2.数据结构与算法:斐波那契算法相关推荐

  1. Interview:算法岗位面试—上海某公司算法岗位(偏机器学习,互联网金融行业)技术面试考点之数据结构相关考察点—斐波那契数列、八皇后问题、两种LCS问题

    ML岗位面试:上海某公司算法岗位(偏机器学习,互联网金融行业)技术面试考点之数据结构相关考察点-斐波那契数列.八皇后问题.两种LCS问题 Interview:算法岗位面试-上海某公司算法岗位(偏机器学 ...

  2. Java数据结构与算法---斐波那契数列Fibonacci

    Java数据结构与算法-斐波那契数列Fibonacci 原理都很简单,直接上代码: package cn.m_fibonacci;public class Fibonacci {public stat ...

  3. 斐波那契算法举例(iterative Fibonacci algorithm)

    // count_change.cpp : Defines the entry point for the console application. // #include "stdafx. ...

  4. 斐波那契算法详解(logn)

    ** 斐波那契算法详解 ** ** 1.斐波那契数列的一般解法: for循环强行计算 ** #include <stdio.h> int main() { int n ; int fn = ...

  5. 数据结构与算法 | 斐波那契查找

    要想能够理解这一算法,需要先了解 1.二分查找 https://blog.csdn.net/qq_35423154/article/details/101383518 2.斐波那契数 https:// ...

  6. 最优化算法-斐波那契数列搜索

    斐波那契数列搜索,参考Edwin<最优化导论>第四版7.3章节,算法采用go语言实现. /****************************************** FileNa ...

  7. 算法---斐波那契思想

    1.主要框架:f(n)=f(n-1)+f(n-2) 用不同的方法求解斐波那契数列的时间效率大不相同.第一种基于递归的解法虽然直观但时间效率很低,在实际软件开发中不会用这种方法,也不可能得到面试官的青睐 ...

  8. 将真分数分解为埃及分数(斐波那契算法步骤)Java

    package com.patience.interview.huawei;import java.util.Scanner;/*** 将真分数分解为埃及分数* @author Green.Gee* ...

  9. 427-动态规划算法-斐波那契数列

    动态规划算法求解斐波那契数列 状态:dp数组,存储已经求解的子问题的最优解 递归版本的动态规划算法 //参数n表示斐波那契数列中数字的个数. //返回相应个数的斐波那契数列数字的值. int fabn ...

最新文章

  1. java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输
  2. java gmail smtp_通过JAVA中的Gmail SMTP服务器发送电子邮件
  3. 优秀的PHP程序员至少应该了解PHP代码的优缺点(转)
  4. zeroc ice php,ZeroC ICE+PHP整合
  5. cocos2dx3.2文件结构和代码结构
  6. 阿里开源框架-2018年末
  7. [UE4] 通过 Git 进行版本控制时的报错 No assets to check in! 的解决方法:重新更改本地代码
  8. [OSX安装教程] [整理]虚拟机VM安装Mac OS X
  9. Spring之JDBC模板jdbcTemplate
  10. 论文赏析[COLING18]两种成分句法分析的局部特征模型
  11. (转)常见的用户密码加密方式以及破解方法
  12. Hadoop学习笔记三
  13. 解决g2o无法编译出g2o_viewer的问题
  14. springboot企业级进销存管理系统
  15. 童年的李子明都长大了,你还会去买一罐旺仔牛奶吗?
  16. Windows 7 64位版本的内存错误导致蓝屏死机(Blue Screen to Death)
  17. ps扁平图之 油画(莫奈)中的色彩与几何
  18. 解决Mac book pro (M1芯片)电脑打开idea卡顿,cpu飙升的问题。
  19. 工程院院士李德毅:汽车正在被软件所改变
  20. 【LOJ #6617】「THUPC 2019」摆家具 / furniture(DP / BSGS / 矩阵快速幂)

热门文章

  1. 电机控制系列-电磁学基础知识
  2. android系统定制开发动态显示隐藏虚拟按键虚拟导航Navigationbar
  3. 永磁同步电机的FOC/ DTC控制比较
  4. 使用UIImagePickerController实现 iOS录像拍照
  5. Python实现语音识别(基于百度语音识别)
  6. 技术员教你如何在PE下重装系统(包含win10和win7)
  7. eprint自定义打印工具
  8. 一步了解html中的浮动
  9. 【君思智慧园区】智慧园区规划思路分析
  10. 3.使用GSYVideoPlayer实现仿抖音视频播放以及点赞飘心效果