【C++】【斐波那契】求第几个斐波那契数字。
首先在头文件 whichfibonaccinumber.h 中写了一个使用加法的解法。没有验证输入数字是否小于0。
#ifndef WHICHFIBONACCINUMBER_H_
#define WHICHFIBONACCINUMBER_H_
typedef unsigned long long uint64;
// 简写unsigned long long,因为是64位,写作 uint64(意为:无符号int 64位)
// max == 18446744073709551615,尽量保证不溢出。
// 另有:“通项公式”解法需要开平方。
uint64 whichFibonacciNumber(int number)
{
if(1 == number || 2 == number)
{
return 1; // 序号是1 和 2 的斐波那契数字是 1,返回1
}
else
{
uint64 prev = 1; // 前一个数
uint64 next = 1; // 后一个数
uint64 result = prev + next; // 最终返回的结果,前两个数相加
int index = 3; // 斐波那契数的序号,第3个是2
while(number != index) // 检查序号
{
prev = next;
next = result;
result += prev; // 以上3行做的是更新数字,以及计算新数
++index; // 新数的序号
}
return result; // 返回结果
}
}
#endif // WHICHFIBONACCINUMBER
然后是主程序 main.cpp,使用一个循环持续输入序号。输入序号的验证也在这里做。
#include <iostream>
#include "whichfibonaccinumber.h"
int main()
{
using std::cout;
using std::cin;
using std::endl;
// unsigned long long --> 8 字节 即64位
cout << "求第几个斐波那契数: ";
int index;
while((cin >> index))
{
if(index <= 0)
{
cout << "序号不能小于1" << endl;
continue;
}
cout << "第" << index << "个斐波那契数字是:";
cout << whichFibonacciNumber(index) << endl;
cout << "继续求第几个斐波那契数字,或输入任意非数字字符退出: ";
}
return 0;
}
感想:疏忽了基础知识,今天做得不够好。对于没有进过培训机构的我,面试单位会更注重考基础。
【C++】【斐波那契】求第几个斐波那契数字。的更多相关文章
- python迭代器实现斐波拉契求值
斐波那契数列(Fibonacci sequence),又称黄金分割数列,也称为"兔子数列":F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*).例 ...
- 斐波那契求第n项
摘自 https://blog.csdn.net/lpjishu/article/details/51323116 斐波那契求第n项是常见的算法题 方法1 递归法 //斐波那契 0,1,1,2,3 ...
- 用x种方式求第n项斐波那契数,99%的人只会第一种
大家好啊,我们又见面了.听说有人想学数据结构与算法却不知道从何下手?那你就认真看完本篇文章,或许能从中找到方法与技巧. 本期我们就从斐波那契数列的几种解法入手,感受算法的强大与奥妙吧. 原文链 ...
- CF628D Magic Numbers (数据大+数位dp)求[a,b]中,偶数位的数字都是d,其余为数字都不是d,且能被m整除的数的个数
题意:求[a,b]中,偶数位的数字都是d,其余为数字都不是d,且能被m整除的数的个数(这里的偶数位是的是从高位往低位数的偶数位).a,b<10^2000,m≤2000,0≤d≤9 a,b< ...
- Java算法求最大最小值,冒泡排序,斐波纳契数列一些经典算法<不断更新中>
清明在家,无聊,把一些经典的算法总结了一下. 一.求最大,最小值 Scanner input=new Scanner(System.in); int[] a={21,31,4,2,766,345,2, ...
- 非递归和递归分别实现求第n个斐波那契数。
菲波那切数列为:0 1 1 2 3 5 8 13 21 34... 规律:从第三个数字起后面的每一个数字都是前两个数字的和. 非递归算法: #include<stdio.h> int ma ...
- 洛谷- P1306 斐波那契公约数 - 矩阵快速幂 斐波那契性质
P1306 斐波那契公约数:https://www.luogu.org/problemnew/show/P1306 这道题目就是求第n项和第m项的斐波那契数字,然后让这两个数求GCD,输出答案的后8位 ...
- 冒泡排序 and 选择排序 变量打印斐波拉契数列 and 数组打印斐波拉契数列
1 排序 1.1 冒泡排序 #include <stdio.h> int main() { ]; printf("input six int numbers:\n"); ...
- [P1306] 斐波那契公约数 (矩阵快速幂+斐波那契数列)
一开始数据没加强,一个简单的程序可以拿过 gcd(f[n],f[m])=f[gcd(n,m)] 下面这个是加强数据之后的80分代码 #include<bits/stdc++.h> usin ...
随机推荐
- PAT Ranking (排名)
PAT Ranking (排名) Programming Ability Test (PAT) is organized by the College of Computer Science and ...
- CodeForces 492B
Description Vanya walks late at night along a straight street of length l, lit by n lanterns. Consid ...
- 图像处理-07-图像的轮廓提取-Robert算子
图像的轮廓提取-Robert算子 图像的边缘:周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,边缘广泛存在于物体与背景之间.物体与物体之间,基元与基元之间,是图像分割的重要依据. 物体的边缘是由 ...
- iframe 刷新
iframe刷新父页面 parent.location.reload(); iframe 一个子页面操作过后,刷新指定子页面 parent.frames('ifrmname').location.re ...
- 南京邮电大学CTF隐写术部分Writeup
女神 听说这是女神的私房照,里面藏着flag哦 http://115.28.150.176/misc1.jpg 这个链接居然打不开,摔!万念俱灰!主办方可否给力点! P.S.为了方便日后学习,暂时列下 ...
- 深入js的面向对象学习篇(继承篇)——温故知新(三)
写这篇有关继承的文章时,突然想起,几天前的面试.因为习惯在学习知识的时候加上自己的理解,很喜欢用自己话来解释,于是乎当面试被问起继承原理时,噼里啪啦一大堆都是自己组织的话,(也可能是因为个人紧张.外加 ...
- 如何在Ubuntu下搭建Android NDK开发环境
1 搭建Android SDK开发环境 参考在在Ubuntu下搭建Android SDK开发环境(图文)首先在Ubuntu下搭建Android SDK开发环境. 2 下载NDK开发包 打开官网: ht ...
- FZU-1926+KMP
题意:给定一篇文章和一些句子.询问句子是否在文章中出现. kmp模板题 /* kmp */ #include<stdio.h> #include<string.h> #incl ...
- weblogic集群无法启动,提示java.lang.NumberFormatException
我有两台weblogic9.2做的集群A,B,A是主服务器,B是受管服务器,后来通过脚本启动weblogic服务,A服务启动异常,经查后台的日志文件发现报错消息如下: WebLogic Server ...
- samba配置smb.conf
[share] path = /home/phinecos/share available = yes browsealbe = yes public = ye ...