又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
代码以及算法都比较简单如下:
import java.util.Scanner; public class Fibonacci { public static void main(String args[]) { Scanner input = new Scanner(System.in); int n, remainder = 1; System.out.printf("请输入所求数列数目:" + '\n'); n = input.nextInt(); System.out.print(Fibo(n)); } static int Fibo(int n) { if (n <= 2) { return 1; } return Fibo(n - 1) + Fibo(n - 2); } }
另外刚刚做了蓝桥杯里面的一个关于斐波那契数列的题目,题目以及代码如下:
import java.util.Scanner; public class Fibonacci2 { public static void main(String args[]){ Scanner input = new Scanner(System.in); int a=1,b=1,sum=1; int n; n = input.nextInt(); if (n<=2) System.out.println(sum); else { for (int i=3;i<=n;i++){ sum=(a+b)%10007; a=b; b=sum; } System.out.println(sum); } } }
这是一个很水的题目,需要提及的一点在于需要防止数列过大而造成溢出,所以要在循环体中每次计算前都加上一个判断,判断是否超过给定数字的大小。
另外,这个题目代码用的是递推不是递归,如果用一个方法写递归算法再在主方法中引用的话运行会超时。
ps:刚开始我想着是不是用数组存储大数一样,在n的数目很大的时候将数列存储起来,但是想着不会那么麻烦没有实验。或许以后看见可能会试试。
Over