首先在头文件 whichfibonaccinumber.h 中写了一个使用加法的解法。没有验证输入数字是否小于0。

  1. #ifndef WHICHFIBONACCINUMBER_H_
  2. #define WHICHFIBONACCINUMBER_H_
  3. typedef unsigned long long uint64;
  4. // 简写unsigned long long,因为是64位,写作 uint64(意为:无符号int 64位)
  5. // max == 18446744073709551615,尽量保证不溢出。
  6. // 另有:“通项公式”解法需要开平方。
  7. uint64 whichFibonacciNumber(int number)
  8. {
  9. if(1 == number || 2 == number)
  10. {
  11. return 1; // 序号是1 和 2 的斐波那契数字是 1,返回1
  12. }
  13. else
  14. {
  15. uint64 prev = 1; // 前一个数
  16. uint64 next = 1; // 后一个数
  17. uint64 result = prev + next; // 最终返回的结果,前两个数相加
  18. int index = 3; // 斐波那契数的序号,第3个是2
  19. while(number != index) // 检查序号
  20. {
  21. prev = next;
  22. next = result;
  23. result += prev; // 以上3行做的是更新数字,以及计算新数
  24. ++index; // 新数的序号
  25. }
  26. return result; // 返回结果
  27. }
  28. }
  29. #endif // WHICHFIBONACCINUMBER

然后是主程序 main.cpp,使用一个循环持续输入序号。输入序号的验证也在这里做。

  1. #include <iostream>
  2. #include "whichfibonaccinumber.h"
  3. int main()
  4. {
  5. using std::cout;
  6. using std::cin;
  7. using std::endl;
  8. // unsigned long long --> 8 字节 即64位
  9. cout << "求第几个斐波那契数: ";
  10. int index;
  11. while((cin >> index))
  12. {
  13. if(index <= 0)
  14. {
  15. cout << "序号不能小于1" << endl;
  16. continue;
  17. }
  18. cout << "第" << index << "个斐波那契数字是:";
  19. cout << whichFibonacciNumber(index) << endl;
  20. cout << "继续求第几个斐波那契数字,或输入任意非数字字符退出: ";
  21. }
  22. return 0;
  23. }

  感想:疏忽了基础知识,今天做得不够好。对于没有进过培训机构的我,面试单位会更注重考基础。

【C++】【斐波那契】求第几个斐波那契数字。的更多相关文章

  1. python迭代器实现斐波拉契求值

    斐波那契数列(Fibonacci sequence),又称黄金分割数列,也称为"兔子数列":F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*).例 ...

  2. 斐波那契求第n项

    摘自  https://blog.csdn.net/lpjishu/article/details/51323116 斐波那契求第n项是常见的算法题 方法1  递归法 //斐波那契 0,1,1,2,3 ...

  3. 用x种方式求第n项斐波那契数,99%的人只会第一种

    大家好啊,我们又见面了.听说有人想学数据结构与算法却不知道从何下手?那你就认真看完本篇文章,或许能从中找到方法与技巧.     本期我们就从斐波那契数列的几种解法入手,感受算法的强大与奥妙吧. 原文链 ...

  4. 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< ...

  5. Java算法求最大最小值,冒泡排序,斐波纳契数列一些经典算法<不断更新中>

    清明在家,无聊,把一些经典的算法总结了一下. 一.求最大,最小值 Scanner input=new Scanner(System.in); int[] a={21,31,4,2,766,345,2, ...

  6. 非递归和递归分别实现求第n个斐波那契数。

    菲波那切数列为:0 1 1 2 3 5 8 13 21 34... 规律:从第三个数字起后面的每一个数字都是前两个数字的和. 非递归算法: #include<stdio.h> int ma ...

  7. 洛谷- P1306 斐波那契公约数 - 矩阵快速幂 斐波那契性质

    P1306 斐波那契公约数:https://www.luogu.org/problemnew/show/P1306 这道题目就是求第n项和第m项的斐波那契数字,然后让这两个数求GCD,输出答案的后8位 ...

  8. 冒泡排序 and 选择排序 变量打印斐波拉契数列 and 数组打印斐波拉契数列

    1 排序 1.1 冒泡排序 #include <stdio.h> int main() { ]; printf("input six int numbers:\n"); ...

  9. [P1306] 斐波那契公约数 (矩阵快速幂+斐波那契数列)

    一开始数据没加强,一个简单的程序可以拿过 gcd(f[n],f[m])=f[gcd(n,m)] 下面这个是加强数据之后的80分代码 #include<bits/stdc++.h> usin ...

随机推荐

  1. Ping的过程详解

    先看拓朴图: 我在这里讲拼的两情况,一种是同一网段内,一种是跨网段的ping …. 首先,如果主机A,要去拼主机B,那么主机A,就要封装二层报文,他会先查自己的MAC地址表,如果没有B的MAC地址,就 ...

  2. jsp多条件查询及查询结果在同一页面显示(原创)

    第一步,建立main.jsp页面,使用frameset分上下两个框架,上部是query.jsp.下部是detail .detail显示的是showdetail.jsp的页面 <title> ...

  3. [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍

    注:为了看上去比较清晰这里只转载了中文 原地址:  [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍 本章将引导您完成安装和设置开发环境,然后你就可 ...

  4. 机器学习基石的泛化理论及VC维部分整理(第五讲)

    第五讲 Training versus Testing 一.问题的提出 \(P_{\mathcal{D}}\left [ BAD   \mathcal{D} \right ]  \leq 2M \cd ...

  5. 1048: [HAOI2007]分割矩阵 - BZOJ

    Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了 ...

  6. JAVA CAS单点登录(SSO) 教程

    一.教程前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Auth ...

  7. PHP session有效期session.gc_maxlifetime的设置方法

    PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适 ...

  8. [Firefly引擎][学习笔记四][已完结]服务器端与客户端的通讯

    原地址:http://www.9miao.com/question-15-54981.html 传送门:学习笔记一学习笔记二学习笔记三 前言:学习笔记三是模块封装,这个在持续开发中会不断更新, 因为写 ...

  9. python time相关操作

    1.获取当前时间的两种方法: 代码如下: import datetime,timenow = time.strftime("%Y-%m-%d %H:%M:%S")print now ...

  10. CF 136A Presents

    http://codeforces.com/problemset/problem/136/A 题意 :就是输入很多数字,第 i 个数字 pi 代表着第 i 个人的礼物给了第 pi 个人,而让你输出的数 ...