我是一个C++初学者,控制台输出斐波那契数列。

代码如下:

//"斐波那契数列"V1.0
//李国良于2017年1月12日编写完成 #include <iostream>
#include <Windows.h> using namespace std; const int num = 10000;
const int ArSize = 1000; void functionOne(int num);
void functionTwo(int num); int main()
{
SetConsoleTitle("斐波纳契数列");
cout << "long long类型的最大值为:" << LLONG_MAX << endl;
cout << "unsigned long long类型的最大值为:" << ULLONG_MAX << endl;
cout << "long类型的最大值为:" << LONG_MAX << endl;
cout << "unsigned long类型的最大值为:" << ULONG_MAX << endl;
cout << "int类型的最大值为:" << INT_MAX << endl;
cout << "unsigned int类型的最大值为:" << UINT_MAX << endl;
functionTwo(num);
system("pause");
return 0;
} void functionOne(int num)
{
cout << "本程序会依次输出斐波纳契数列,超过93数据就会溢出。" << endl;
unsigned long long a = 1;
unsigned long long b = 1;
unsigned long long c;
for (int i = 1; i <= num; ++i)
{
if (i <= 2)
{
cout << i << " " << 1 << endl;
}
else
{
c = a + b;
cout << i << " " << c << endl;
a = b;
b = c;
}
}
}
void functionTwo(int num)
{
cout << "本程序会依次输出斐波纳契数列,数字长度超过数组上限就会自动停止输出。" << endl;
int a[ArSize];
int b[ArSize];
int c[ArSize];
static int x = 0;
static bool y = false;
for (int i = 0; i < ArSize; ++i)
{
a[i] = b[i] = c[i] = 0;
}
a[0] = b[0] = 1;
for (int i = 1; i <= num; ++i)
{
if (i <= 2)
{
cout << 1 << endl;
}
else
{
for (int j = 0; j < ArSize; ++j)
{
if (x == 0)
{
if (a[j] + b[j] == 0)
{
c[j] = 0;
}
else
{
c[j] = (a[j] + b[j]) % 10;
x = (a[j] + b[j]) / 10;
}
if (j == ArSize - 1 && x == 1)
{
cout << "数字长度已超过数组上限,自动停止..." << endl;
return;
}
continue;
}
if (x == 1)
{
c[j] = (a[j] + b[j] + x) % 10;
x = (a[j] + b[j] + x) / 10;
if (j == ArSize - 1 && x == 1)
{
cout << "数字长度已超过数组上限,自动停止..." << endl;
return;
}
}
}
x = 0;
cout << i << " ";
for (int j = ArSize - 1; j >= 0; --j)
{
if (c[j] != 0)
{
y = true;
}
if (y)
{
cout << c[j];
a[j] = b[j];
b[j] = c[j];
}
}
y = false;
cout << endl;
}
}
}

用C++实现斐波那契数列的更多相关文章

  1. C#求斐波那契数列第30项的值(递归和非递归)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)

    对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...

  3. js中的斐波那契数列法

    //斐波那契数列:1,2,3,5,8,13…… //从第3个起的第n个等于前两个之和 //解法1: var n1 = 1,n2 = 2; for(var i=3;i<101;i++){ var ...

  4. 剑指Offer面试题:8.斐波那契数列

    一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时 ...

  5. 算法: 斐波那契数列C/C++实现

    斐波那契数列: 1,1,2,3,5,8,13,21,34,....     //求斐波那契数列第n项的值 //1,1,2,3,5,8,13,21,34... //1.递归: //缺点:当n过大时,递归 ...

  6. 洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]

    P1962 斐波那契数列 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数 ...

  7. Python递归及斐波那契数列

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ...

  8. 简单Java算法程序实现!斐波那契数列函数~

    java编程基础--斐波那契数列 问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路:可能出现的情况:(1) n=1 ,一种方法 ;(2)n=2 ...

  9. js 斐波那契数列(兔子问题)

    对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路. 希望看完这篇文章之后会对你有帮助. 什么是斐波那契数列 : 答: 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Le ...

  10. 剑指offer三: 斐波拉契数列

    斐波拉契数列是指这样一个数列: F(1)=1; F(2)=1; F(n)=F(n-1)+F(n); public class Solution { public int Fibonacci(int n ...

随机推荐

  1. 算法课上机实验(一个简单的GUI排序算法比较程序)

    (在家里的电脑上Linux Deepin截的图,屏幕大一点的话,deepin用着还挺不错的说) 这个应该是大二的算法课程上机实验时做的一个小程序,也是我的第一个GUI小程序,实现什么的都记不清了,只记 ...

  2. Add GUI to connect to SQL

    (*********************************************************************************) (* *) (* Below i ...

  3. Oracle琐碎笔记2

    备注:以下所有操作均在sqlplus中执行. 开始前输入:spool c:\jiyi.txt;结束后输入:spool off;就会记忆操作的所有记录save c:\sql.sql;保存sql脚本可以使 ...

  4. Ajax运用总结B

    Jquery重新学习之八[Ajax运用总结B]   上一篇简单介绍普通javascript以及Jquery的AJAX方法,其中Jquery.ajax()是功能比较强悍的底层方法,可以更多地关注实现过程 ...

  5. MVC 5.1的遭遇:“已添加了具有相同键的项”

    ASP.NET MVC 3升级至MVC 5.1的遭遇:“已添加了具有相同键的项”   最近将一个项目从ASP.NET MVC 3升级至刚刚发布的ASP.NET MVC 5.1,升级后发现一个ajax请 ...

  6. 使用maven+eclipse搭建最简单的struts2的helloworld

    使用maven+eclipse搭建最简单的struts2的helloworld 一.web分层结构简介 1.web[细]粒度分层结构: 按细粒度分层可以分为以下6种: 1).表现层:html/css/ ...

  7. 应该熟知的表单js应用(select、label、submit)

    前言  首先需要清楚的是,表单传数据方式,有POST和GET的方式,通过name和对应的value值提交到后台.通过name,可以用对象属性调用的方式获取对应的input标签,如: document. ...

  8. 认知的SSH

    认知的SSH 实习了三个月,对着SSH有着一定的认识了,就以自已认识的大概思路写一篇文章吧,留给以后的自已,也恳请各位博友们如果看到我的认识有过错的地方能帮我指正过来! 在写正文之前,先说说我这段时间 ...

  9. xhEditor入门基础

    一.下载最新版本xhEditor:http://xheditor.com/download  (官网无法下载,CSDN提供下载:http://download.csdn.net/detail/itmy ...

  10. Google开源的Deep-Learning项目word2vec

    用中文把玩Google开源的Deep-Learning项目word2vec   google最近新开放出word2vec项目,该项目使用deep-learning技术将term表示为向量,由此计算te ...