这是我计算n的Fibonacci的代码。当n = 0
,ArrayIndexOutOfBoundException
被提升时,我无法得到。在fib
时n = 0
功能,它应return 0
。这是什么原因?
import java.util.Scanner;
public class Fibonacci {
public static int fib(int n) {
int[] t = new int[n + 1];
t[0] = 0;
t[1] = 1;
for (int i = 2; i < t.length; i++) {
t[i] = t[i - 1] + t[i - 2];
}
return t[n];
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
for (;;) {
if (!in.hasNextInt()) {
in.next();
continue;
}
int n = in.nextInt();
if (n >= 0) {
System.out.println(fib(n));
} else {
System.out.println("Invalid input!");
}
break;
}
}
}
答案 0 :(得分:3)
当n = 0时,数组int[] t = new int[n + 1];
仅包含1个元素。但是,您尝试分配两个元素:
t[0] = 0;
t[1] = 1;
答案 1 :(得分:0)
这段代码可以简单得多!为什么它会给你这个错误,因为当你输入0时,数组是由元素(0 + 1)创建的,所以1元素。然后尝试给出两个元素值。下面是使用递归的斐波那契序列的一个例子
public int fibonacci(int n){
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}