public classOuiz ! ! !可以根据需要添加另外的函数与变量 // 数列前2项为 11,从第3项开始,若为奇数项,则值为前两项之和,若为偶数项,则值为前两项之和的2倍/可知该数列前6项为 1 1 2 6 8 28 求该数列的第n项 /请用递归和循环两种方式实现 public static long getN(int n) { //给定一个int型数组,找出其中大于e的数字中倒数第二小的数字的下标 // 例如 1 -1 3 2 ,其中大于的数字有1 3 2,倒数第二小的数字为2,其下标为3 不能使用排序 尽量只使用一次循环 public static int getIndex(int[] array)(
时间: 2024-02-09 12:12:59 浏览: 85
C#\和.NET130道面试题.pdf
好的,我可以帮您解答这两个问题。
第一个问题,使用递归实现该数列的第n项:
```java
public static long getNRecursion(int n) {
if (n == 1 || n == 2) {
return 1;
}
long pre1 = 1, pre2 = 1, cur = 0;
for (int i = 3; i <= n; i++) {
if (i % 2 == 1) {
cur = pre1 + pre2; // 奇数项
} else {
cur = (pre1 + pre2) * 2; // 偶数项
}
pre1 = pre2;
pre2 = cur;
}
return cur;
}
```
使用循环实现该数列的第n项:
```java
public static long getNLoop(int n) {
if (n == 1 || n == 2) {
return 1;
}
long pre1 = 1, pre2 = 1, cur = 0;
for (int i = 3; i <= n; i++) {
if (i % 2 == 1) {
cur = pre1 + pre2; // 奇数项
} else {
cur = (pre1 + pre2) * 2; // 偶数项
}
pre1 = pre2;
pre2 = cur;
}
return cur;
}
```
第二个问题,使用一次循环实现找出int型数组中大于e的数字中倒数第二小的数字的下标:
```java
public static int getIndex(int[] array, int e) {
int min = Integer.MAX_VALUE, secondMin = Integer.MAX_VALUE, index = -1;
for (int i = 0; i < array.length; i++) {
if (array[i] > e) {
if (array[i] < min) {
secondMin = min;
min = array[i];
index = i;
} else if (array[i] < secondMin) {
secondMin = array[i];
}
}
}
return index;
}
```
希望能够帮到您!
阅读全文