分别使用递归方法和循环方法设计斐波那契数列(1,1,2,3,5,……),接受一个整数n作为输入,输出第n位斐波那契数。并说明两种方法的优劣。用java
时间: 2024-09-19 12:06:05 浏览: 6
斐波那契数列是一个经典的数列,其中每个数字都是前两个数字之和。以下是递归和循环两种方法在Java中分别实现斐波那契数列的例子:
**递归方法**:
```java
public class FibonacciRecursion {
public static int fibonacci(int n) {
if (n <= 0) return 0;
else if (n == 1 || n == 2) return 1;
else return fibonacci(n - 1) + fibonacci(n - 2);
}
}
```
优点:思路直观,代码简洁。对于小规模的问题,递归实现可能更易于理解。
缺点:效率较低,因为存在大量的重复计算。随着n增大,时间复杂度呈指数级增长。
**循环方法**:
```java
public class FibonacciLoop {
public static int fibonacci(int n) {
if (n <= 0) return 0;
int a = 0, b = 1, c;
for (int i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
}
```
优点:效率高,避免了递归带来的重复计算。时间复杂度为O(n),随着n的增加性能稳定。
缺点:代码相对于递归稍微复杂一些,可能不太直观。