Java 输入为零时的ArrayIndexOutOfBoundException

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的斐波那契的代码。当
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.修好了。谢谢