Java:数列前2项为 1, 1,从第3项开始,若为奇数项,则值为前两项之和,若为偶数项,则值为前两项之和的2倍 // 可知该数列前6项为 1,1,2,6,8,28,求该数列的第n项 ? 请用递归和循环两种方式实现
时间: 2024-02-11 18:03:41 浏览: 148
好的,下面是Java语言的实现。
1. 递归实现
递归实现的代码如下所示:
```java
public static int recursiveFibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else if (n % 2 == 0) {
return 2 * recursiveFibonacci(n-1);
} else {
return recursiveFibonacci(n-1) + recursiveFibonacci(n-2);
}
}
```
2. 循环实现
循环实现的代码如下所示:
```java
public static int loopFibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
// 初始化前两项的值
int a = 1, b = 1;
// 根据递推式计算当前项的值
for (int i = 3; i <= n; i++) {
if (i % 2 != 0) {
int temp = a + b;
a = b;
b = temp;
} else {
int temp = 2 * (a + b);
a = b;
b = temp;
}
}
return b;
}
}
```
以上两种方式都可以得到正确的结果,但是递归实现可能会有栈溢出的风险,而循环实现则可以避免这个问题。
阅读全文