public class TestRef {
public static void main(String[] args) {
System.out.print("输入n(n>0):");
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] arr = new int[n+1];//这个地方多开辟了一个空间,否则当n==1时,执行arr[1]=1时会抛出数组越界的异常
if(n<1){
System.out.println("n输入不合理");
return;//直接退出,否则下面的arr[0]和arr[1]的赋值操作会数组越界
}
arr[0] = 1;
arr[1] = 1;
for(int i=2;iarr[i] = arr[i-1] + arr[i-2];//当前的每个数都是他前面的两个数字之和
}
for(int i=0;iSystem.out.print(arr[i]+" ");
}
}
}
代码如上,这里需要说明一下,n大概在50左右的时候就会发现数字已经变成负数了,这个问题不是程序的问题,而是超过了int所能存储的最大范围导致的。你自己留意一下就好了。
public class jdemo {
static final int MAXSIZE_OF_ARRAY = 100; // 假定最多100项,具体根据实际情况修改此处
public static void main(String args[]){
System.out.println(Fibonacci(4));
}
public static int Fibonacci(int findIndex){ // Zero-Base
Integer[] fib=new Integer[MAXSIZE_OF_ARRAY];
fib[0]=fib[1]=1;
for(int i=2;i<=MAXSIZE_OF_ARRAY-1;i++){
fib[i]=fib[i-1]+fib[i-2];
if(findIndex==i) return fib[i];
}
return -1;
}
}
这个要判断的如果n=2,就是1,1 如果n>2, n等于几,那么你可以创建一个数组,这个数组的长度就是n,然后你循环数组加起来就行了