非递归实现斐波那契数列计算 Java
时间: 2024-12-03 18:30:53 浏览: 30
非递归方式计算斐波那契数列通常会使用循环(如while或for循环)来迭代地求解,避免了函数的嵌套调用。这种方法更高效,因为递归可能导致大量的重复计算。下面是Java中非递归实现斐波那契数列的一个例子:
```java
public class Fibonacci {
// 使用动态规划的思想,存储已经计算过的斐波那契数
private static long[] fibCache = new long[60]; // 足够处理小于46的斐波那契数
// 计算第n个斐波那契数
public static long fibonacci(int n) {
if (n <= 0) {
throw new IllegalArgumentException("Input should be a positive integer");
} else if (n == 1 || n == 2) {
return 1;
} else if (fibCache[n] != 0) {
return fibCache[n];
} else {
long fibVal = fibonacci(n - 1) + fibonacci(n - 2);
fibCache[n] = fibVal;
return fibVal;
}
}
public static void main(String[] args) {
int n = 10; // 测试第10个斐波那契数
System.out.println("The " + n + "th Fibonacci number is: " + fibonacci(n));
}
}
```
在这个例子中,我们首先检查输入值是否合法,然后检查缓存中是否已经有了结果,如果有就直接返回,如果没有则计算当前斐波那契数并将结果保存在缓存中供后续查询。这样每次只需要计算前两个数的和,而不是重复计算多次。
阅读全文