编写一个Java程序,求解斐波那契数列的第n项。
时间: 2024-10-17 08:13:30 浏览: 39
FibJava:来自 https 的 Java 中的斐波那契数列
当然可以。在Java中,我们可以使用递归或循环的方式来计算斐波那契数列的第n项。以下是两种常见方法的示例:
**递归法:**
```java
public class Fibonacci {
public static long fibonacciRecursion(int n) {
if (n <= 0) {
throw new IllegalArgumentException("Input should be a positive integer.");
}
if (n == 1 || n == 2) {
return n - 1; // 因为F(1) = 0, F(2) = 1, 我们减1来对应传统斐波那契数列的索引
}
return fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2);
}
public static void main(String[] args) {
int n = 10; // 你想计算的斐波那契数列项
try {
System.out.println("The " + n + "th Fibonacci number is: " + fibonacciRecursion(n));
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
**迭代法(更高效):**
```java
public class Fibonacci {
public static long fibonacciIteration(int n) {
if (n <= 0) {
throw new IllegalArgumentException("Input should be a positive integer.");
}
long fib = 0, prevFib = 1;
for (int i = 2; i <= n; i++) {
long temp = fib;
fib += prevFib;
prevFib = temp;
}
return fib;
}
public static void main(String[] args) {
int n = 10; // 计算第n项
try {
System.out.println("The " + n + "th Fibonacci number is: " + fibonacciIteration(n));
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
在这两个例子中,`fibonacciRecursion`使用了递归算法,对于较大的n值可能会很慢,因为会有大量的重复计算。而`fibonacciIteration`则是通过循环避免了重复,效率更高。
阅读全文