• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++求Fib数列

C++求Fib数列

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了fib数列,fib水平试剂盒,fib,gta5fib任务中断,fib是什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1. 第一版本程序

int fib(int pos)
  {
    int elem = 1;
    int n1 = 1, n2 = 1;
    for (int i = 3; i <= pos; i++)
    {
      elem = n2 + n1;
      n1 = n2;
      n2 = elem;
    }
    return elem;
  }
</div>

2. 第二版本

bool fib(int pos, int &elem)
  {
    if(pos < 0 || pos > 1024)
    {
      elem = 0;
      return false;
    }
    elem = 1; //注意:定义只能有1次
    int n1 = 1, n2 = 1;
    for (int i = 3; i <= pos; i++)
    {
      elem = n2 + n1;
      n1 = n2;
      n2 = elem;
    }
    return true;
  }
</div>

主函数调用

int main()
  {  
      int pos;
    cout <<"Please enter a position: ";
    cin >> pos;
  
    int elem;
    if(fib(pos, elem))
    {
      cout << "element # " << pos
         << " is " << elem << endl;
    }
    else
      cout << "Sorry. Couldn't calculate element #"
         << pos <<endl;
  }
</div>

3. 第三版本 改进后的fib

const vector<int>* fib_new(int size)
  {
    const int max_size = 1024;
    static vector<int> elems;
  
    if(size <= 0 || size >= max_size)
    {
      cerr << "fib_new(): oops:invalid size:"
         << size << "-- can't fulfill request.\n";
      return 0;
    }
    for(int ix = elems.size(); ix < size; ix++)
    {
      if (ix == 0 || ix == 1)
        elems.push_back(1);
      else
        elems.push_back(elems[ix - 1] + elems[ix - 2]);
    }
    return &elems;
  }
</div>

主函数调用

    const vector<int> *result=fib_new(5);
    cout << result->back();
    
    const vector<int> *result=fib_new(5);
    cout << result->at(4)<< endl;
    //这个应该怎么多次调用返回,这个还没明白,留个记号。
</div>

最后这个版本可以避免进行重复运算,使用了局部静态对象。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++求Fib数列

相关文章

  • 2017-05-28VC WinExec打开指定程序或者文件的方法
  • 2017-05-28C++ decltype类型说明符
  • 2017-05-28vector,map,list,queue的区别详细解析
  • 2017-05-28简单掌握C++编程中的while与do-while循环语句使用
  • 2017-05-28C/C++ 公有继承、保护继承和私有继承的对比详解
  • 2017-05-28c++ 连接两个字符串实现代码 实现类似strcat功能
  • 2017-05-28深入理解C++的多态性
  • 2017-05-28C/C++字符串查找函数全面了解
  • 2017-05-28关于在MFC中将窗口最小化到托盘实现原理及操作步骤
  • 2017-05-28C++ string 字符串查找匹配实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C程序读取键盘码的方法
    • 详解C++编程中运算符的使用
    • COLORREF,COLOR,RGB,CString的转化总结分析
    • 指针操作数组的两种方法(总结)
    • 马尔可夫链算法(markov算法)的awk、C++、C语言实现代码
    • 减少C++代码编译时间的简单方法(必看篇)
    • 一波C语言字符数组实用技巧集锦
    • c++ map,mutimap删除问题分析
    • 关于"引用"的几点说明介绍
    • C++获得本机所有网卡的IP和MAC地址信息的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有