斐波那契数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,……
注:第0项是0;第1项、第2项是1;从第3项开始,每一项都等于前两项之和。
以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
方法一:用递归实现。
这种实现方法最简单,但是效率太低了,当n>=50时,你会发现计算时间明显变长
package qq;
public class qq {
public static void main(String[] args) {
for (int counter = 1; counter <= 20; counter++){
System.out.printf("Fibonacci of %d is: %d\n", counter, fibonacci(counter));
}
}
//使用递归
public static long fibonacci(long number) {
if ((number == 0) || (number == 1))
return number;
else
return fibonacci(number - 1) + fibonacci(number - 2);//递归调用
}
}
方法二:用for循环实现。
这种方法计算效率高
package qq;
public class qq {
public static void main(String[] args) {
for (int counter = 1; counter <= 10; counter++){
System.out.printf("Fibonacci of %d is: %d\n", counter, fibonacci(counter));
}
}
//使用for循环
public static long fibonacci(int n) {
if (n ==1 || n == 2) {
return 1;
}
long a =1l, b= 1l, c =0l; //定义三个long类型整数
for (int i = 0; i < n - 2; i++) {
c = a + b; //第3个数的值等于前两个数的和
a = b; //第2个数的值赋值给第1个数
b = c; //第3个数的值赋值给第2个数
}
return c;
}
}
Fibonacci of 1 is: 1
Fibonacci of 2 is: 1
Fibonacci of 3 is: 2
Fibonacci of 4 is: 3
Fibonacci of 5 is: 5
Fibonacci of 6 is: 8
Fibonacci of 7 is: 13
Fibonacci of 8 is: 21
Fibonacci of 9 is: 34
Fibonacci of 10 is: 55