Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将N个数组元素相加到给定元素的左侧?_Java_Arrays_Sequence - Fatal编程技术网

Java 如何将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

抱歉,如果这个问题让人困惑,我是编程新手,我不知道如何表达它,甚至谷歌也多次无法理解我

我试图求解某种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,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、 这非常接近答案,给了我很好的提示。谢谢,这非常接近答案,给了我很好的提示。