用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 ...
随机推荐
- [译]关于Java 字符串最常被问到的十个问题
(说明,该文章翻译自Top 10 questions of Java Strings) 下面是关于Java字符串最常被问到的十个问题 1.怎么去比较字符串?使用==还是使用equals()? 简单来说 ...
- jquery-制作选项卡
强大的jquery-制作选项卡 最近在学习jquery,特地把今天写的一个选项卡源码贴出来.只是做只是梳理,大神们请不要吐槽,如果有更好的方法,欢迎指点.谢谢. css <style> ...
- phpcms 模板常用标签指南
1.关于SEO <meta name="keywords" content="{$SEO[keyword]}"/> <meta name=&q ...
- 由浅入深学习.NET CLR 系列:目录
经过对Android的一阵折腾,些许熟悉了一些Java的东东,又开始转战.NET.我觉得学习最好和工作不要相离太远,才会更加随笔随意,索性整理一些比较系统的.NET的基础知识学习学习.一提起学习.NE ...
- 【转】Android 图层引导帮助界面制作
2012-11-02 10:31 1979人阅读 评论(0) 收藏 举报 原文:http://www.cnblogs.com/beenupper/archive/2012/07/18/2597504. ...
- 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
处理方法其实很简单.只要: alter user <username> identified by <same password>; 这个操作后,恢复正常了 下面作个 ...
- JSON之FastJson
FastJson是什么? 从网上查到--- 官网地址:http://code.alibabatech.com/wiki/display/FastJSON/Overview(已关闭) FastJSOn是 ...
- S全选功能代码
JS全选功能代码优化 2014-06-26 00:00 by 龙恩0707, 470 阅读, 3 评论, 收藏, 编辑 JS全选功能代码优化 最近在看javascript MVC那本书,也感觉到自己写 ...
- [转载]Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- vim实用笔记
vim实用笔记 真是不知不觉过了一年,前段时间忙着考试什么的,没再写笔记写博客,考完又懒懒地玩了几天.这几天其实都在读别人的博客,感受一下大神的工作和生活感悟,感受一下过来人的经历和经验,对自己总 ...