返回数组前n个位置之和的函数

时间:2014-02-01 20:27:17

标签: java function recursion

我正在尝试编写一个递归函数,它返回数组中前n个位的总和。这是我的代码(Java):

static int sumN(int[] A, int n)
  {
    if (n == 0) return n;
    return sumN(A, (n-1)) + A[n];
  }

这不按预期工作。你有什么想法?我也缺乏足够的if-n-is-strange-return-something-else。

4 个答案:

答案 0 :(得分:4)

试试这个:

public static int sumN(int[] A, int n) {
    if (n <= 0)
        return 0;
    return A[n-1] + sumN(A, n-1);
}

索引存在一些问题,请记住Java中的数组是基于0的。您可以验证它是否按预期工作:

int[] a = {1, 2, 10, -7, 8, 99};
System.out.println(sumN(a, 4));
=> 6

答案 1 :(得分:0)

您不应该返回n,而是A[0]。另外,我添加了一个超出范围的检查。

static int sumN(int[] A, int n) {
    if (n < 0 || n > A.length - 1) return 0; // or some error value
    if (n == 0) return A[0]; // so not n
    return sumN(A, (n-1)) + A[n];
}

答案 2 :(得分:0)

为什么在使用直接方式对数字求夏时使用递归方法:)

答案 3 :(得分:0)

直接从netbeans IDE看这个解决方案:) enter image description here

它工作得很好:)