使用Java实现斐波那契数列的函数
斐波那契数列是指:{1,1,2,3,5,8,13,21,34,55,...},即前两项为1,后面每一项均为前两项之和。在计算机程序中,斐波那契数列的求解是一个经典的问题,而且有多种实现方式。本文将介绍使用Java实现斐波那契数列的函数。
方法一:递归实现
递归实现是最简单的一种方法,代码也很容易理解。但是递归实现有一个缺点,就是会重复计算很多已经计算出来的值,效率比较低。
1.实现代码如下:
public static int fibonacci(int n){
if(n == 1 || n == 2){
return 1;
}
return fibonacci(n-1) + fibonacci(n-2);
}
2.测试代码如下:
public static void main(String[] args){
for(int i=1; i<=10; i++){
System.out.print(fibonacci(i) + " ");
}
}
3.测试结果如下:
1 1 2 3 5 8 13 21 34 55
方法二:循环实现
循环实现是比较高效的一种方法,因为它不会重复计算已经计算出来的值。
1.实现代码如下:
public static int fibonacci(int n){
if(n == 1 || n == 2){
return 1;
}
int a = 1;
int b = 1;
int result = 0;
for(int i=3; i<=n; i++){
result = a + b;
a = b;
b = result;
}
return result;
}
2.测试代码同样如下:
public static void main(String[] args){
for(int i=1; i<=10; i++){
System.out.print(fibonacci(i) + " ");
}
}
3.测试结果同样如下:
1 1 2 3 5 8 13 21 34 55
方法三:数组实现
数组实现是利用一个数组来保存已经计算出来的值,避免重复计算,与循环实现类似。
1.实现代码如下:
public static int fibonacci(int n){
if(n == 1 || n == 2){
return 1;
}
int[] fi = new int[n];
fi[0] = 1;
fi[1] = 1;
for(int i=2; i<n; i++){
fi[i] = fi[i-1] + fi[i-2];
}
return fi[n-1];
}
2.测试代码同样如下:
public static void main(String[] args){
for(int i=1; i<=10; i++){
System.out.print(fibonacci(i) + " ");
}
}
3.测试结果也是一样的:
1 1 2 3 5 8 13 21 34 55
综上,使用Java实现斐波那契数列的函数有三种方法,分别是递归实现、循环实现和数组实现。至于哪种方法更好,要看具体情况而定。如果要求简单、易读,可以选择递归实现;如果要求高效,可以选择循环实现或数组实现。
