Java 输入为零时的ArrayIndexOutOfBoundException
这是我计算n的斐波那契的代码。当Java 输入为零时的ArrayIndexOutOfBoundException,java,Java,这是我计算n的斐波那契的代码。当n=0时,我无法获取引发的ArrayIndexOutOfBoundException异常。从fib函数中,当n=0时,它应该返回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;
n=0
时,我无法获取引发的ArrayIndexOutOfBoundException
异常。从fib
函数中,当n=0
时,它应该返回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;
}
}
}
import java.util.Scanner;
公共类斐波那契{
公共静态整数fib(整数n){
int[]t=新的int[n+1];
t[0]=0;
t[1]=1;
对于(int i=2;i=0){
系统输出println(fib(n));
}否则{
System.out.println(“无效输入!”);
}
打破
}
}
}
当n=0时,数组int[]t=newint[n+1]代码>仅包含1个元素。但是,您尝试分配两个元素:
t[0]=0代码>
t[1]=1
当n=0时,数组int[]t=newint[n+1]代码>仅包含1个元素。但是,您尝试分配两个元素:
t[0]=0代码>
t[1]=1
当n=0时,数组int[]t=newint[n+1]代码>仅包含1个元素。但是,您尝试分配两个元素:
t[0]=0代码>
t[1]=1
当n=0时,数组int[]t=newint[n+1]代码>仅包含1个元素。但是,您尝试分配两个元素:
t[0]=0代码>
t[1]=1代码>此代码可以简单得多!但为什么会出现这个错误,是因为当您输入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);
}
这段代码可以简单得多!但为什么会出现这个错误,是因为当您输入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);
}
这段代码可以简单得多!但为什么会出现这个错误,是因为当您输入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);
}
这段代码可以简单得多!但为什么会出现这个错误,是因为当您输入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);
}
谢谢,但是你的代码的这个运行时间是O(2^n)。谢谢,但是你的代码的这个运行时间是O(2^n)。谢谢,但是你的代码的这个运行时间是O(2^n)。谢谢,但是你的代码的这个运行时间是O(2^n)。太好了:D。修复。谢谢你:D.修好了。谢谢你:D.修好了。谢谢你:D.修好了。谢谢