public class E10Fibonacci {
//计算斐波那契数列的f(n),可涉及台阶问题、正方形覆盖问题等
public static long getFibonacciN(int n){
//自底向上求解
if (n == 0) return 0;
if (n == 1) return 1;
long fibonacciOne = 0;
long fibonacciTwo = 1;
long fibonacciN = 0;
for (int i = 2; i <= n; i++){
fibonacciN = fibonacciOne + fibonacciTwo;
fibonacciOne = fibonacciTwo;
fibonacciTwo = fibonacciN;
}
return fibonacciN;
}
public static long FibonacciN(int n){
//递归时效率较低,有许多重复,求解数值较大时还可能发生递归栈溢出
if (n == 0)
return 0;
if (n == 1)
return 1;
return FibonacciN(n - 1) + FibonacciN(n - 2);
}
//测试用例
public static void main(String[] args){
System.out.println(getFibonacciN(0));
System.out.println(getFibonacciN(1));
System.out.println(getFibonacciN(100));
System.out.println(FibonacciN(100)); //求解速度非常非常慢
}
}
斐波那契数列(Java实现)
最新推荐文章于 2025-05-17 17:07:22 发布