用C++实现斐波那契数列
我是一个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++实现斐波那契数列的更多相关文章
- C#求斐波那契数列第30项的值(递归和非递归)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)
对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...
- js中的斐波那契数列法
//斐波那契数列:1,2,3,5,8,13…… //从第3个起的第n个等于前两个之和 //解法1: var n1 = 1,n2 = 2; for(var i=3;i<101;i++){ var ...
- 剑指Offer面试题:8.斐波那契数列
一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时 ...
- 算法: 斐波那契数列C/C++实现
斐波那契数列: 1,1,2,3,5,8,13,21,34,.... //求斐波那契数列第n项的值 //1,1,2,3,5,8,13,21,34... //1.递归: //缺点:当n过大时,递归 ...
- 洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]
P1962 斐波那契数列 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数 ...
- Python递归及斐波那契数列
递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ...
- 简单Java算法程序实现!斐波那契数列函数~
java编程基础--斐波那契数列 问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路:可能出现的情况:(1) n=1 ,一种方法 ;(2)n=2 ...
- js 斐波那契数列(兔子问题)
对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路. 希望看完这篇文章之后会对你有帮助. 什么是斐波那契数列 : 答: 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Le ...
- 剑指offer三: 斐波拉契数列
斐波拉契数列是指这样一个数列: F(1)=1; F(2)=1; F(n)=F(n-1)+F(n); public class Solution { public int Fibonacci(int n ...
随机推荐
- Linux生成动态库系统
Linux生成动态库系统 一个.说明 Linux下动态库文件的扩展名为 ".so"(Shared Object). 依照约定,全部动态库文件名称的形式是libname.so(可能在 ...
- 笔试题&面试题:CW输出矩阵
称号:CW输出矩阵(N*N). 如果一个矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 那么程序应该给出的输出为:1 2 3 4 8 1 ...
- wcf的binding和host
----------------------------Binding绑定:定义:绑定表示通讯信道的配置:定义了客户端与服务端之间的协议:---传输协议:http.tcp.命名管道.msmq,自定义( ...
- 为ASP.NET MVC应用程序创建更复杂的数据模型
为ASP.NET MVC应用程序创建更复杂的数据模型 2014-05-07 18:27 by Bce, 282 阅读, 1 评论, 收藏, 编辑 这是微软官方教程Getting Started wit ...
- 为什么使用Ninject?
Ninject 3 学习笔记 一.为什么使用Ninject? 分类: 程序2012-11-10 19:23 2209人阅读 评论(0) 收藏 举报 c#iocNinject框架注入 最近在使用IoC进 ...
- 在一般处理文件中访问Session需要添加IRequiresSessionState
在IHttpHandler 使用Session 通常我们经常,通过session判定用户是否登录.还有一些临时的.重要的数据也尝尝存放在Session中. 在页面我们很容易的得到Session的值,但 ...
- [google面试CTCI] 2-3 只给定链表中间节点指针,如何删除中间节点?
[链表] Q:Implement an algorithm to delete a node in the middle of a single linked list, given only acc ...
- .NET 微信开放平台接口(接收短信、发送短信)
.NET 微信开放平台接口(接收短信.发送短信) 前两天做个项目用到了微信api功能.项目完成后经过整理封装如下微信操作类. 以下功能的实现需要开发者已有微信的公众平台账号,并且开发模式已开启.接口配 ...
- [新概念英语II 笔记] Lesson 3: Please Send Me a Card
发现身边很多程序员都能看懂英文技术文章的60%-80%内容,但大家都有一个毛病,就是不会说,不会写作,在逛英文技术社区的时候,想发表点什么评论,总担心自己写的话有错误.究其原因, 我觉得主要原因是因为 ...
- 将JSON映射为实体对象(iOS篇)
将JSON映射为实体对象(iOS篇) iOS开发人员已经习惯于将JSON转换为字典或者数组来进行操作了,接下来我要做的事情,可能匪夷所思,但是,对WP和Android开发人员而言,他们更倾向于将JSO ...