Java中的斐波那契
我正在尝试创建一个程序,该程序可以在斐波那契序列中找到400万以下的偶数之和。我知道有一种更简单的方法,但我想看看它是否能与数组一起工作。我以前从未真正使用过数组,因为我对Java相当陌生,这就是为什么我想看看这是否适用于数组。我的主要问题是for语句。如何查看fibarray[I]的内容是否少于4000000 另外,如果我用fibarray=newint[I]做这件事可以吗 如果这听起来真的很愚蠢,我道歉。 任何帮助都将不胜感激。Java中的斐波那契,java,arrays,Java,Arrays,我正在尝试创建一个程序,该程序可以在斐波那契序列中找到400万以下的偶数之和。我知道有一种更简单的方法,但我想看看它是否能与数组一起工作。我以前从未真正使用过数组,因为我对Java相当陌生,这就是为什么我想看看这是否适用于数组。我的主要问题是for语句。如何查看fibarray[I]的内容是否少于4000000 另外,如果我用fibarray=newint[I]做这件事可以吗 如果这听起来真的很愚蠢,我道歉。 任何帮助都将不胜感激。 谢谢。那么,您需要以i=2开始for循环。for循环应该采用这
谢谢。那么,您需要以i=2开始for循环。for循环应该采用这种语法
for(i = 2; fibarray[i] < 4000000; i++) {
fibarray[i] = fibarray[i - 1] + fibarray[i - 2];
}
请参见代码中的注释:
public static void main(String[] args){
/*************************
* comments on your code
int[] fibarray; //use right java naming convention
int numCount = 0; //this variable is never used
int i = 0;
long sum = 0;
fibarray = new int[i];//you initialize an array of size 0.
fibarray[0] = 0; //you can't set value to array of size 0
fibarray[1] = 1; //you can't set value to array of size 0
//wrong syntax
for(i = 0 , fibarray[i] < 4000000, i++;;){
//use for(i = 0 ; fibarray[i] < 4000000; i++){
fibarray[i] = fibarray[i - 1] + fibarray[i - 2];
}
*******************************/
//Alternative code
//you don't need to keep all Fibonachi numbers found.
//you only use 3 numbers for every calculation
int size = 3;
int totalLimit = 4000000;
int[] fibArray = new int[size];
fibArray[0] = 0; fibArray[1] = 1;
int total = 0;
while( true ) {
fibArray[2] = fibArray[0] + fibArray[1] ;
if((fibArray[2]%2) ==0) { //even number
if((total + fibArray[2]) >= totalLimit) {
break;
}
total += fibArray[2];
}
fibArray[0] = fibArray[1] ;
fibArray[1] = fibArray[2] ;
}
System.out.println("Total "+ total );
}
如果需要,请不要犹豫要求澄清。为什么您认为这样做行不通?在尝试获取类名索引时,您的意思是什么?首先,您必须创建一个对象,比如ArrayList a=new ArrayList或int[]a=new int[capacity]。之后,如果[i]>4000,那么使用您提到的这种构造就没有问题了。@Bashalex无需提及ArrayList。它们有不同的语法,OP的基本问题是数组语法。您能否提供详细信息/参考以支持您认为它不起作用的观点?它不起作用,因为它有语法错误,并且使用了大小为0的数组。您是否只想将偶数斐波那契数相加到4M?如何设置fibarray的大小?@c0在使用int[]fibarray=new int[size_of_array]进行设置时;我有你在评论中提出的很多问题。我知道我现在做错了什么。谢谢没问题,我以后会继续的。我想问的另一件事是,如何将数组[x]的内容与数字进行比较?我可以使用>和<符号将数组的内容与数字进行比较吗?可以。它很简单,可以运行一个简单的测试并亲自查看。谢谢,我只是问了一下,因为出于某种原因它不起作用。我没有否决投票。我不能-我只有不到15个孩子。
public static void main(String[] args){
/*************************
* comments on your code
int[] fibarray; //use right java naming convention
int numCount = 0; //this variable is never used
int i = 0;
long sum = 0;
fibarray = new int[i];//you initialize an array of size 0.
fibarray[0] = 0; //you can't set value to array of size 0
fibarray[1] = 1; //you can't set value to array of size 0
//wrong syntax
for(i = 0 , fibarray[i] < 4000000, i++;;){
//use for(i = 0 ; fibarray[i] < 4000000; i++){
fibarray[i] = fibarray[i - 1] + fibarray[i - 2];
}
*******************************/
//Alternative code
//you don't need to keep all Fibonachi numbers found.
//you only use 3 numbers for every calculation
int size = 3;
int totalLimit = 4000000;
int[] fibArray = new int[size];
fibArray[0] = 0; fibArray[1] = 1;
int total = 0;
while( true ) {
fibArray[2] = fibArray[0] + fibArray[1] ;
if((fibArray[2]%2) ==0) { //even number
if((total + fibArray[2]) >= totalLimit) {
break;
}
total += fibArray[2];
}
fibArray[0] = fibArray[1] ;
fibArray[1] = fibArray[2] ;
}
System.out.println("Total "+ total );
}