【每天一题ACM】 斐波那契数列(Fibonacci sequence)的实现

时间:2023-03-09 13:23:06
【每天一题ACM】  斐波那契数列(Fibonacci sequence)的实现

最近因为一些原因需要接触一些ACM的东西,想想写个blog当作笔记吧!同时也给有需要的人一些参考

话不多说,关于斐波那契数列(Fibonacci sequence)不了解的同学可以看看百度百科之类的,http://baike.baidu.com/link?url=KjZumXHZb0wCxYHW4qcfvJF2HIKFIxPuznpBUFweLXhboe6T48gT454LgnxralFKXYJ0-sMoeonnDOC_axuPfK

有条件的也可以看看wiki,https://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97

这里就不详细的介绍了。由于博主正在*学习,所以题目是繁体的。。见谅

题目如下:

費氏數列

在數學上,費波那契數列是以遞迴的方法來定義:

F(0)=0

F(1)=1

F(n) = F(n-1)+ F(n-2)   (n≧2)

用文字來說,就是費波那契數列由0和1開始,之後的費波那契系數就由之前的兩數相加。首幾個費波那契系數是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……

請實作一程式,當輸入n時,請輸出F(n)

INPUT

第一行是測資個數k

接下來一行一個數字n , 共k行

OUTPUT

請一行一個的輸出每個n的F(n)

SAMPLE INPUT

3

1

10

8

SAMPLE OUTPUT

1

55

21

------------------分割线------------------

解题:

首先关于F(n) = F(n-1)+ F(n-2),相信各位应该都有想到使用递归来实现,这题的难度本身很简单。主要是考察递归的基本功所以就不多做解释了。直接上代码:

 import java.util.ArrayList;
import java.util.Scanner; /**
* @Description: 在数学上,斐波那契数列是以递回的方法来定义: F(0)=0 F(1)=1 F(n) = F(n-1)+ F(n-2)
* (n≧2)
* @author LCC
* @date 2016年3月9日 下午8:57:58
*
*/
public class Fibonacci {
public static int num = 1; /**
* @Description: 求解斐波那契数列
* @param num 输入的参数
* @return 递归计算到num==1为止
*/
public static int fibonacci(int num) {
if (num == 1) {
return 1;
} else if (num == 0) {
return 0;
}
return fibonacci(num - 1) + fibonacci(num - 2);
} public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> rsList = new ArrayList<>();
int k = scan.nextInt();//測資個數k
for (int i = 0; i < k; i++) {
int n = scan.nextInt();
rsList.add(fibonacci(n));
}
for (int value : rsList) {
System.out.println(value);
}
} }