利用JAVA数组循环编程,显示下面数据的前n项,已知前两项的值都是1,后

利用JAVA数组循环编程,显示下面数据的前n项,已知前两项的值都是1,后面各项是其前两项数据之和。

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;i<n;i++){
arr[i] = arr[i-1] + arr[i-2];//当前的每个数都是他前面的两个数字之和
}
for(int i=0;i<n;i++){
System.out.print(arr[i]+" ");
}
}
}

代码如上,这里需要说明一下,n大概在50左右的时候就会发现数字已经变成负数了,这个问题不是程序的问题,而是超过了int所能存储的最大范围导致的。你自己留意一下就好了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-28
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;
}
}

第2个回答  2016-12-28
这个要判断的如果n=2,就是1,1 如果n>2, n等于几,那么你可以创建一个数组,这个数组的长度就是n,然后你循环数组加起来就行了
第3个回答  2016-12-28