看到一个关于斐波拉契数列的问题、包括以下问题:

  1. 计算斐波拉契数列的第50项、100项。
  2. 斐波拉契数列中的第多少项开始大于100亿。

之前在学习递归的时候也接触过用递归和迭代计算斐波拉契数列的相关知识,看到这个问题的第一反应是int和long的数值范围是否满足要求,于是用简单的循环计算第50项的值、输出为负数即超出了int的表示范围。于是想到用数组保存斐波拉契数的每一位。代码如下:

#include <iostream>
int main(){int calline = 100; //斐波拉契的calline项int f0[30] = { 0 }; f0[29] = 1; int f1[30] = { 0 }; f1[29] = 1;int f2[30] = {0};int *ptrf0 = f0, *ptrf1 = f1, *ptrf2 = f2;int len = 1; //f2 = f0 + f1: len is the length of f1int tmplen = 0;for (int cur = 2; cur < calline; cur++){int carry = 0; //是否有进位tmplen = 0;for (int index = 29; index >= 0 && (tmplen < len || carry); index--) {if (ptrf0[index] + ptrf1[index] + carry > 9){ptrf2[index] = ptrf0[index] + ptrf1[index] + carry - 10;carry = 1;}else{   ptrf2[index] = ptrf0[index] + ptrf1[index] + carry;carry = 0;}tmplen++;/* 计算第一个大于999999999的项if (tmplen >= 10) {std::cout << "f" << cur << "is the first num that is bigger than 999999999" << endl;calline = cur;}*/}len = tmplen;int* ptrtmp = ptrf0;ptrf0 = ptrf1;ptrf1 = ptrf2;ptrf2 = ptrtmp;}for(int index = 0; index <= 29; index++)std::cout << ptrf1[index] << std::endl;return 0;}

​​​​​


  • 运行结果如下:

curline = 100

curline = 50

斐波拉契的第100项相关推荐

  1. 斐波拉契数列前100项求和c语言,C++斐波那契数列前100项详细数据

    f⑴=C(0,0)=1. f⑵=C(1,0)=1. f⑶=C(2,0)+C(1,1)=1+1=2. f⑷=C(3,0)+C(2,1)=1+2=3. f⑸=C(4,0)+C(3,1)+C(2,2)=1+ ...

  2. 输出斐波拉契数列前30项,每行5个

    """ 功能:输出斐波拉契数列前30项,每行5个 作者:文雅兰 日期:2021年12月2日 """ #生成斐波拉契数列前30项 fib = ...

  3. 斐波拉契数列前n项和 斐波拉契数列第n项

    此篇题解不为别的,纯属纪念,纪念一个已经且也许永远淡出我生活的人... 记不清是大二还是大三了,只记得在教四304实验室,你教我如何用矩阵快速幂来求解斐波拉契数列的第n项,然后考我怎么用类似的方法计算 ...

  4. 计算斐波那契数列第100项(二维数组思维转换)

    斐波那契数列第100项肯定很多位,常规的数据类型肯定存储不下,所以!!要进行换个思路!!即二维数组 反正我觉得这样还挺方便的咯 用二维数组的每一行存储每一项的值,从每一行的最后一列开始,如果>1 ...

  5. C++递归或非递归实现求斐波拉契数列第n项

    斐波拉契竖列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144- 递归 #include <iostream> using namespace std;i ...

  6. Python 探讨斐波拉契数列模素数的周期问题

    Python 探讨斐波拉契数列模素数的周期问题之目录 前言 一.生成斐波拉契数列 二.创建素数列表 三.搜索周期数列的循环节 3.1 斐波拉契数列模 p p p 的周期 3.2 循环节的搜寻代码 3. ...

  7. Python案例:格式化输出斐波拉契数列

    文章目录 一.提出任务 二.运行效果 三.实现步骤 1.定义fib(n)函数 2.采用format()函数实现格式化输出 3.采用repr()与rjust()函数实现格式化输出 4.运行程序,查看效果 ...

  8. C案例:打印斐波拉契数列

    C案例:打印斐波拉契数列 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)= ...

  9. 斐波拉契数列python写法

    文章目录 第一种:递推方法 第二种:递归方式 第三种:用一个类写出比较全面的斐波拉契 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonard ...

最新文章

  1. 联通和阿里云合作 建互联网云化卡号管理系统
  2. centos6.5 架设Telnet服务
  3. 大型网站技术架构文摘
  4. 常见设计模式结构图助记之结构型
  5. qt 提升 全局包含_研讨引思想碰撞,学习促共同提升 | 粤渝两地幼教同行深度交流...
  6. CentOS虚拟机 Device eth0 does not seem to be present
  7. Redis 6.0 源码阅读笔记(6) -- Set 数据类型源码分析
  8. InnoDB存储引擎的主要优点
  9. sql语句优化的几种方法
  10. php url伪静态,PHP url伪静态
  11. mysql-connector-java-8.0.26-bin.jar 包含bin的jar下载
  12. 百度收购YY:第三次直播大战开启
  13. 很全很强大的图形学相关的论文和源码
  14. css选择器权重排序_css选择器的权重计算
  15. 电容击穿之后是开路还是短路?
  16. 小程序-腾讯视频插件
  17. 卡耐基的这100句话,畅销85年,改变了很多人
  18. WIN7 安装使用远程服务器管理工具-如DHCP、AD域、HyperV、远程桌面
  19. Android禁止截屏
  20. go语言学习第一弹:go和php的区别

热门文章

  1. 海信电视升级鸿蒙系统,海信电视陆续启动聚好看升级计划
  2. 有一堆棋子,两枚两枚的数,最后余1枚,3枚3枚的数,最后余2枚,5枚5枚的数,最后余4枚,6枚6枚的数,最后余5枚,只有7枚7枚的数,正好可以数完。编程求出这堆棋子最少有多少枚棋子?
  3. R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系...
  4. Ubuntu18.04 安装Proverif 和Syther_tool
  5. grabcad无法注册也能下载模型的方法
  6. linux网络诊断工具mtr;speedtest网络测速脚本
  7. MacOS 安装 Kettle(Data Integration)
  8. 【测试用例练习】测试购物车(含思路)
  9. Google安全浏览算法更新:屡教不改的站点将被屏蔽30天
  10. 2020.7.25 PAT线上考试后记