Fibonacci数

描述
无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为
F(n)=1 ...........(n=1或n=2)
F(n)=F(n-1)+F(n-2).....(n>2)
现要你来求第n个斐波纳奇数。(第1个、第二个都为1)

输入
第一行是一个整数m(m<5)表示共有m组测试数据
每次测试数据只有一行,且只有一个整形数n(n<20)
输出
对每组输入n,输出第n个Fibonacci数
样例输入

3
1
3
5

样例输出

1
2
5

#include <iostream>

using namespace std;

int main()
{
int m;

cin >> m; //n组测试数据
for (int test = 1; test <= m; test++)
{
int n;
cin >> n;
long long fn = 0,
f1 = 1,
f2 = 1;
for (int i = 3; i <= n; i++)
{
fn = f1 + f2;
f1 = f2;
f2 = fn;
}
if (fn != 0)
cout << fn << endl;
else
cout << 1 << endl;

}
return 0;
}

时间: 2024-10-29 23:52:28

Fibonacci数的相关文章

【HDU 4786 Fibonacci Tree】最小生成树

一个由n个顶点m条边(可能有重边)构成的无向图(可能不连通),每条边的权值不是0就是1. 给出n.m和每条边的权值,问是否存在生成树,其边权值和为fibonacci数集合{1,2,3,5,8...}中的一个. 求最小生成树和最大生成树,得到生成树边权和的下界left和上界right.这道题由于每条边权值不是0就是1,因此生成树边权和可以覆盖到[left,right]的每一个数.那么求得[left,right],看是否有fibonacci数在区间内就可以了. 1 #include <cstdio>

一个简单的Fibonacci类的封装

class Fibonacci def initialize rewind end def next tmp = @v0 @v0,@v1=@v1,@v0+@v1 tmp end def rewind @v0,@v1=1,1 end end   使用的例子,将前1000个Fibonacci数写入文件:   fib = Fibonacci.new File.open("see.txt","w"){|f| 1000.times {|x|f.puts "%d :

PHP教程.程序控制

程序|教程|控制 程序控制 本章深入PHP内部,讲述如何使用函数.表达式和语句以实现对程序的控制. 前面的章节初步介绍了怎样操作数据,如果我们将操作数和操作符看作是构筑元件的话,那么它们组合起来即可形成表达式.进一步讲,表达式可以构成语句,语句用于组成函数,而函数则可用来组成程序. 提示:在学习有关编程语言的基本元素时,从全局理解--即理解这些元素是如何组成一个完整程序的--可能非常困难.但也不必着急,乐观一点.接下来的章节将逐步的显示整个程序,并且一点一点的解释它们是如何构造的. 4.1 表达

《PHP程序设计》 第四章 程序控制

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  第四章 程序控制      本章深入PHP内部,讲述如何使用函数.表达式和语句以实现对程序的控制.      前面的章节初步介绍了怎样操作数据,如果我们将操作数和操作符看作是构筑元件的话,那么它们组合起来即可形成表达式.进一步讲,表达式可以构成语句,语句用于组成函数,而函数则可用来组成程序.      提示:在学习有关编

Java语言中的函数编程

Java 语言中常被忽视的一个方面是它被归类为一种命令式(imperative)编程语言.命令式编程虽然由于与 Java 语言的关联而相当普及,但是并不是惟一可用的编程风格,也不总是最有效的.在本文中,我将探讨在 Java 开发实践中加入不同的编程方法 ── 即函数编程(FP). 命令式编程是一种用程序状态描述计算的方法.使用这种范型的编程人员用语句改变程序状态.这就是为什么,像 Java 这样的程序是由一系列让计算机执行的命令 (或者语句) 所组成的.另一方面, 函数编程是一种强调表达式的计算

【HDU 2013 猴子吃桃子】 尾递归与迭代

大一时的一道C语言练习题,可作为递归和尾递归转迭代的范例.HDU 2013 http://acm.hdu.edu.cn/showproblem.php?pid=2013 题意:猴子摘了sum个桃子,从第1天开始,每天吃掉剩余桃子的一半多一个,第n天时只剩1个桃子,求sum值. 分析:设第 i 天在开吃之前所剩的桃子数为sum(i),第 i 天要吃掉的桃子数为f(i), 则问题可表示为:已知sum(n)=1 和如下两个关系式: f(i) = sum(i)/2 + 1 (1) sum(i+1) =

泛函编程(3)-认识Scala和泛函编程

 接着昨天的文章,再示范一个稍微复杂一点的尾递归tail recursion例子:计算第n个Fibonacci数.Fibonacci数第一.第二个数值分别是0,1,按顺序后面的数值是前面两个数的加合.例如:0,1,1,2,3,5... 1 def fib(n: Int): Int = { 2 @annotation.tailrec 3 def go(cnt: Int, prev: Int, cur: Int): Int = cnt match { 4 case m if (m < 0 ) =>

汤姆大叔的6道javascript编程题题解

看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) var a = [1, 2, 3, 6, 5, 4];  var ans = Math.max.apply(null, a);  console.log(ans);  // 6  这题很巧妙地用了apply,如果不是数组,是很多数字求最大值,我们知道可以这样: var ans = Math.max(1, 2, 3, 4, 5, 6);  conso

一个游戏程序员的学习资料

转自:http://software.intel.com/zh-cn/blogs/2012/03/20/400010004/?cid=sw:prccsdn2194 想起写这篇文章是在看侯杰先生的<深入浅出MFC>时, 突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码参考.一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值.我的原则是只写自己研究过或准备研究的资料,所以内容无 疑会带上强烈的个人喜好色彩, 比如对网