Java 如何将N个数组元素相加到给定元素的左侧?
抱歉,如果这个问题让人困惑,我是编程新手,我不知道如何表达它,甚至谷歌也多次无法理解我 我试图求解某种Fibonnaci序列,但它不求最后2个数的和,而是求最后N个数的和Java 如何将N个数组元素相加到给定元素的左侧?,java,arrays,sequence,Java,Arrays,Sequence,抱歉,如果这个问题让人困惑,我是编程新手,我不知道如何表达它,甚至谷歌也多次无法理解我 我试图求解某种Fibonnaci序列,但它不求最后2个数的和,而是求最后N个数的和 public double[] sequenceSum(double[] sequence) { //some fancy method here } 其中sequence.length实际上是应该加多少个数字。 因此,如果电话是: Sequencesum(1,2,3,4) …顺序应继续{1,2,3,4,10,18,35,6
public double[] sequenceSum(double[] sequence) {
//some fancy method here
}
其中sequence.length实际上是应该加多少个数字。
因此,如果电话是:
Sequencesum(1,2,3,4)
…顺序应继续{1,2,3,4,10,18,35,67…}
如果呼叫是:
Sequencesum(1,0,1,0,1);
…序列应继续{1,0,1,0,1,3,5,10,19,38…}
当然,序列有其局限性,否则它将是无限的,但我只需要帮助如何将左侧N个数组元素求和
非常感谢
编辑:
谢谢,我从这里听取了一些意见并解决了它
是的,序列是有限制的,很抱歉没有把它包括在参数中,我根据之前的建议判断,应该问最少和具体的问题
这是我的密码:
public double[] sequenceSum(double[] sequence, int n) {
double[] xArray = Arrays.copyOf(sequence, n);
for(int i = sequence.length; i<n; i++){
double sum = 0;
for (int j=(i-sequence.length); j < i; j++) {
sum += xArray[j];
}
xArray[i] = sum;
}
return xArray;
}
}
public double[]sequenceSum(double[]sequence,int n){
double[]xArray=Arrays.copyOf(序列,n);
对于(int i=sequence.length;i来说,最佳实践是保持可以在自己的/单独的函数中重用的相同功能,这样您就可以在程序中的任何其他地方使用它。
(它还使您的代码更具结构化和可读性)
因此,在代码中添加以下函数:
public double sumAll(double[] numbers) {
double result = 0;
for(int i = 0 ; i < numbers.length; i++){
result += numbers[i];
}
return result;
}
另一个提示:如果您仅对Fibbonaci序列和类似的整数问题使用此函数,请使用int数据类型,因为浮点数(在本例中为双精度)会增加浮点“噪声”(您可以找到有关此问题的信息)最佳做法是保留可以在自己的/单独的函数中重用的相同功能,以便您可以在程序中的任何其他地方使用它。
(它还使您的代码更具结构化和可读性)
因此,在代码中添加以下函数:
public double sumAll(double[] numbers) {
double result = 0;
for(int i = 0 ; i < numbers.length; i++){
result += numbers[i];
}
return result;
}
另一个提示:如果您仅对Fibbonaci序列和类似的整数问题使用此函数,请使用int数据类型,因为浮点数(在本例中为双精度)会增加浮点“噪声”(您可以找到有关此问题的信息)首先,您应该对整数求和,而不是双精度。如果需要,您可以将整数转换为双精度
其次,您需要包括一个停止条件。我建议使用总长度。这将使方法签名:
public int[] sequenceSum(int[] sequence, int length)
我不给您代码,而是给您编写代码所需的步骤:
创建长度为的int输出数组
获取序列长度
将序列数组复制到输出数组
对序列值求和,从索引0到索引序列长度-1,然后将总和添加到输出数组中
重复步骤4,在开始索引中添加1,在结束索引中添加1,直到输出数组已满
首先,你应该对整数求和,而不是双精度。如果需要的话,你可以将整数转换成双精度
其次,您需要包括一个停止条件。我建议使用总长度。这将使方法签名:
public int[] sequenceSum(int[] sequence, int length)
我不给您代码,而是给您编写代码所需的步骤:
创建长度为的int输出数组
获取序列长度
将序列数组复制到输出数组
对序列值求和,从索引0到索引序列长度-1,然后将总和添加到输出数组中
重复步骤4,在开始索引中添加1,在结束索引中添加1,直到输出数组已满
你试过什么吗?这似乎比我能做的更多。array.length
和递归应该对你有帮助。我总共有2个月的Java经验,Java是我的第一语言:)我已经搜索了库,但现在它太复杂了。很多我不了解的方法我会马上看到递归的作用。谢谢。事实上,我想自己解决它,我只想知道在APIs中哪里可以找到阻止sequenceSum方法求和的方法?你不能返回无限序列。@Kokolo你是welco我:)只要你今天学到了一些新东西,这是最重要的:)你尝试过什么吗?这似乎是做不到的。array.length
和递归应该对你有帮助。我总共有2个月的Java经验,Java是我的第一语言:)我搜索过库,但现在太复杂了。很多方法我都没有我马上就会明白递归的作用了。谢谢。事实上,我想自己解决它,我只想知道在APIs中查找什么可以阻止sequenceSum方法求和?你不能返回无限序列。@Kokolo不客气:)只要你今天学到了一些新东西,这是最重要的:)谢谢s、 这非常接近答案,给了我很好的提示。谢谢,这非常接近答案,给了我很好的提示。